debase-ruby_core_source 4.0.1 → 4.1.0.preview1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/addr2line.h +22 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/builtin.h +127 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/ccan/build_assert/build_assert.h +40 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/ccan/check_type/check_type.h +63 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/ccan/container_of/container_of.h +142 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/ccan/list/list.h +791 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/ccan/str/str.h +17 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/constant.h +53 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/darray.h +295 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/debug_counter.h +428 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/dln.h +33 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/encindex.h +70 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/eval_intern.h +356 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/hrtime.h +237 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/id.h +365 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/id_table.h +74 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/insns.inc +315 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/insns_info.inc +11637 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/array.h +158 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/basic_operators.h +67 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/bignum.h +249 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/bits.h +647 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/box.h +103 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/class.h +797 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/cmdlineopt.h +64 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/compar.h +30 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/compile.h +34 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/compilers.h +104 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/complex.h +29 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/concurrent_set.h +21 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/cont.h +33 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/coverage.h +51 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/dir.h +16 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/enc.h +19 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/encoding.h +40 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/enum.h +18 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/enumerator.h +21 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/error.h +287 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/eval.h +43 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/file.h +40 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/fixnum.h +185 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/gc.h +411 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/hash.h +220 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/imemo.h +302 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/inits.h +54 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/io.h +167 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/io_buffer.h +36 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/jit.h +23 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/load.h +20 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/loadpath.h +16 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/marshal.h +17 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/math.h +23 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/missing.h +19 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/numeric.h +326 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/object.h +88 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/objspace.h +24 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/parse.h +131 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/proc.h +34 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/process.h +124 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/ractor.h +9 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/random.h +17 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/range.h +46 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/rational.h +92 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/re.h +87 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/ruby_parser.h +109 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/sanitizers.h +346 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/scheduler.h +7 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/serial.h +23 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/set.h +20 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/set_table.h +77 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/signal.h +25 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/simd.h +18 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/st.h +32 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/static_assert.h +16 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/string.h +240 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/struct.h +120 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/symbol.h +46 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/thread.h +108 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/time.h +34 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/transcode.h +23 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/util.h +27 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/variable.h +81 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/vm.h +144 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/vm_map.h +95 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/warnings.h +16 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal.h +106 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/iseq.h +439 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/known_errors.inc +1419 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/method.h +279 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/node.h +122 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/node_name.inc +224 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/optinsn.inc +128 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/optunifs.inc +41 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/parse.h +246 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/parser_bits.h +647 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/parser_node.h +32 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/parser_st.h +161 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/parser_value.h +116 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/arena.h +37 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/ast.h +10371 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/buffer.h +52 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/comments.h +43 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/compiler/accel.h +19 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/compiler/align.h +36 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/compiler/assume.h +25 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/compiler/exported.h +24 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/compiler/fallthrough.h +22 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/compiler/filesystem.h +32 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/compiler/flex_array.h +19 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/compiler/force_inline.h +21 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/compiler/format.h +25 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/compiler/inline.h +17 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/compiler/nodiscard.h +22 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/compiler/nonnull.h +18 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/compiler/unused.h +18 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/constant_pool.h +81 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/diagnostic.h +93 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/errors_format.h +53 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/excludes.h +29 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/extension.h +19 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/integer.h +41 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/allocator.h +68 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/allocator_debug.h +88 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/arena.h +108 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/bit.h +42 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/buffer.h +91 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/char.h +139 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/comments.h +20 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/constant_pool.h +152 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/diagnostic.h +389 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/encoding.h +242 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/integer.h +68 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/isinf.h +16 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/line_offset_list.h +34 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/list.h +62 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/magic_comments.h +23 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/memchr.h +15 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/node.h +32 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/options.h +224 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/parser.h +971 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/regexp.h +42 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/serialize.h +39 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/source.h +72 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/static_literals.h +100 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/stringy.h +35 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/strncasecmp.h +18 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/strpbrk.h +33 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/tokens.h +11 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/json.h +32 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/line_offset_list.h +61 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/magic_comments.h +35 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/node.h +94 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/options.h +335 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/parser.h +348 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/prettyprint.h +31 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/prism.h +131 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/serialize.h +115 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/source.h +155 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/stream.h +28 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/string_query.h +63 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/stringy.h +72 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/version.h +38 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism_compile.h +204 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism_xallocator.h +6 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/probes_helper.h +42 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/ractor_core.h +421 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/regenc.h +261 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/regint.h +983 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/regparse.h +371 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/revision.h +5 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/ruby_assert.h +14 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/ruby_atomic.h +115 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/rubyparser.h +1389 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/shape.h +733 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/siphash.h +48 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/symbol.h +116 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/thread_none.h +25 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/thread_pthread.h +63 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/thread_sched.h +271 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/thread_win32.h +48 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/timev.h +58 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/transcode_data.h +138 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/variable.h +26 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/version.h +69 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/vm.inc +6457 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/vm_call_iseq_optimized.inc +244 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/vm_callinfo.h +688 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/vm_core.h +2509 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/vm_debug.h +124 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/vm_exec.h +202 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/vm_insnhelper.h +280 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/vm_opts.h +65 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/vm_sync.h +160 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/vmtc.inc +302 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/yjit.h +87 -0
- data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/zjit.h +221 -0
- data/lib/debase/ruby_core_source/version.rb +1 -1
- metadata +2930 -2724
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
#ifndef PRISM_INTERNAL_OPTIONS_H
|
|
2
|
+
#define PRISM_INTERNAL_OPTIONS_H
|
|
3
|
+
|
|
4
|
+
#include "prism/options.h"
|
|
5
|
+
|
|
6
|
+
/* A scope of locals surrounding the code that is being parsed. */
|
|
7
|
+
struct pm_options_scope_t {
|
|
8
|
+
/* The number of locals in the scope. */
|
|
9
|
+
size_t locals_count;
|
|
10
|
+
|
|
11
|
+
/* The names of the locals in the scope. */
|
|
12
|
+
pm_string_t *locals;
|
|
13
|
+
|
|
14
|
+
/* Flags for the set of forwarding parameters in this scope. */
|
|
15
|
+
uint8_t forwarding;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
/*
|
|
19
|
+
* The version of Ruby syntax that we should be parsing with. This is used to
|
|
20
|
+
* allow consumers to specify which behavior they want in case they need to
|
|
21
|
+
* parse in the same way as a specific version of CRuby would have.
|
|
22
|
+
*/
|
|
23
|
+
typedef enum {
|
|
24
|
+
/*
|
|
25
|
+
* If an explicit version is not provided, the current version of prism will
|
|
26
|
+
* be used.
|
|
27
|
+
*/
|
|
28
|
+
PM_OPTIONS_VERSION_UNSET = 0,
|
|
29
|
+
|
|
30
|
+
/* The vendored version of prism in CRuby 3.3.x. */
|
|
31
|
+
PM_OPTIONS_VERSION_CRUBY_3_3 = 1,
|
|
32
|
+
|
|
33
|
+
/* The vendored version of prism in CRuby 3.4.x. */
|
|
34
|
+
PM_OPTIONS_VERSION_CRUBY_3_4 = 2,
|
|
35
|
+
|
|
36
|
+
/* The vendored version of prism in CRuby 4.0.x. */
|
|
37
|
+
PM_OPTIONS_VERSION_CRUBY_3_5 = 3,
|
|
38
|
+
|
|
39
|
+
/* The vendored version of prism in CRuby 4.0.x. */
|
|
40
|
+
PM_OPTIONS_VERSION_CRUBY_4_0 = 3,
|
|
41
|
+
|
|
42
|
+
/* The vendored version of prism in CRuby 4.1.x. */
|
|
43
|
+
PM_OPTIONS_VERSION_CRUBY_4_1 = 4,
|
|
44
|
+
|
|
45
|
+
/* The current version of prism. */
|
|
46
|
+
PM_OPTIONS_VERSION_LATEST = PM_OPTIONS_VERSION_CRUBY_4_1
|
|
47
|
+
} pm_options_version_t;
|
|
48
|
+
|
|
49
|
+
/* The options that can be passed to the parser. */
|
|
50
|
+
struct pm_options_t {
|
|
51
|
+
/*
|
|
52
|
+
* The callback to call when additional switches are found in a shebang
|
|
53
|
+
* comment.
|
|
54
|
+
*/
|
|
55
|
+
pm_options_shebang_callback_t shebang_callback;
|
|
56
|
+
|
|
57
|
+
/*
|
|
58
|
+
* Any additional data that should be passed along to the shebang callback
|
|
59
|
+
* if one was set.
|
|
60
|
+
*/
|
|
61
|
+
void *shebang_callback_data;
|
|
62
|
+
|
|
63
|
+
/* The name of the file that is currently being parsed. */
|
|
64
|
+
pm_string_t filepath;
|
|
65
|
+
|
|
66
|
+
/*
|
|
67
|
+
* The line within the file that the parse starts on. This value is
|
|
68
|
+
* 1-indexed.
|
|
69
|
+
*/
|
|
70
|
+
int32_t line;
|
|
71
|
+
|
|
72
|
+
/*
|
|
73
|
+
* The name of the encoding that the source file is in. Note that this must
|
|
74
|
+
* correspond to a name that can be found with Encoding.find in Ruby.
|
|
75
|
+
*/
|
|
76
|
+
pm_string_t encoding;
|
|
77
|
+
|
|
78
|
+
/* The number of scopes surrounding the code that is being parsed. */
|
|
79
|
+
size_t scopes_count;
|
|
80
|
+
|
|
81
|
+
/*
|
|
82
|
+
* The scopes surrounding the code that is being parsed. For most parses
|
|
83
|
+
* this will be NULL, but for evals it will be the locals that are in scope
|
|
84
|
+
* surrounding the eval. Scopes are ordered from the outermost scope to the
|
|
85
|
+
* innermost one.
|
|
86
|
+
*/
|
|
87
|
+
pm_options_scope_t *scopes;
|
|
88
|
+
|
|
89
|
+
/*
|
|
90
|
+
* The version of prism that we should be parsing with. This is used to
|
|
91
|
+
* allow consumers to specify which behavior they want in case they need to
|
|
92
|
+
* parse exactly as a specific version of CRuby.
|
|
93
|
+
*/
|
|
94
|
+
pm_options_version_t version;
|
|
95
|
+
|
|
96
|
+
/* A bitset of the various options that were set on the command line. */
|
|
97
|
+
uint8_t command_line;
|
|
98
|
+
|
|
99
|
+
/*
|
|
100
|
+
* Whether or not the frozen string literal option has been set.
|
|
101
|
+
* May be:
|
|
102
|
+
* - PM_OPTIONS_FROZEN_STRING_LITERAL_DISABLED
|
|
103
|
+
* - PM_OPTIONS_FROZEN_STRING_LITERAL_ENABLED
|
|
104
|
+
* - PM_OPTIONS_FROZEN_STRING_LITERAL_UNSET
|
|
105
|
+
*/
|
|
106
|
+
int8_t frozen_string_literal;
|
|
107
|
+
|
|
108
|
+
/*
|
|
109
|
+
* Whether or not the parser should raise an error when it encounters an
|
|
110
|
+
* error. By default this is off, but can be turned on in the case that you
|
|
111
|
+
* want nicely formatted syntax errors. The values that this can be set to
|
|
112
|
+
* are:
|
|
113
|
+
* - 0 - do not raise an error, just return the errors in the result
|
|
114
|
+
* - PM_ERRORS_FORMAT_PLAIN - raise a plain error with no formatting
|
|
115
|
+
* - PM_ERRORS_FORMAT_STYLE - raise an error with bold formatting
|
|
116
|
+
* - PM_ERRORS_FORMAT_COLOR - raise an error with color formatting
|
|
117
|
+
*/
|
|
118
|
+
uint8_t raise_error;
|
|
119
|
+
|
|
120
|
+
/*
|
|
121
|
+
* Whether or not the encoding magic comments should be respected. This is a
|
|
122
|
+
* niche use-case where you want to parse a file with a specific encoding
|
|
123
|
+
* but ignore any encoding magic comments at the top of the file.
|
|
124
|
+
*/
|
|
125
|
+
bool encoding_locked;
|
|
126
|
+
|
|
127
|
+
/*
|
|
128
|
+
* When the file being parsed is the main script, the shebang will be
|
|
129
|
+
* considered for command-line flags (or for implicit -x). The caller needs
|
|
130
|
+
* to pass this information to the parser so that it can behave correctly.
|
|
131
|
+
*/
|
|
132
|
+
bool main_script;
|
|
133
|
+
|
|
134
|
+
/*
|
|
135
|
+
* When the file being parsed is considered a "partial" script, jumps will
|
|
136
|
+
* not be marked as errors if they are not contained within loops/blocks.
|
|
137
|
+
* This is used in the case that you're parsing a script that you know will
|
|
138
|
+
* be embedded inside another script later, but you do not have that context
|
|
139
|
+
* yet. For example, when parsing an ERB template that will be evaluated
|
|
140
|
+
* inside another script.
|
|
141
|
+
*/
|
|
142
|
+
bool partial_script;
|
|
143
|
+
|
|
144
|
+
/*
|
|
145
|
+
* Whether or not the parser should freeze the nodes that it creates. This
|
|
146
|
+
* makes it possible to have a deeply frozen AST that is safe to share
|
|
147
|
+
* between concurrency primitives.
|
|
148
|
+
*/
|
|
149
|
+
bool freeze;
|
|
150
|
+
};
|
|
151
|
+
|
|
152
|
+
/* Free the internal memory associated with the options. */
|
|
153
|
+
void pm_options_cleanup(pm_options_t *options);
|
|
154
|
+
|
|
155
|
+
/*
|
|
156
|
+
* Deserialize an options struct from the given binary string. This is used to
|
|
157
|
+
* pass options to the parser from an FFI call so that consumers of the library
|
|
158
|
+
* from an FFI perspective don't have to worry about the structure of our
|
|
159
|
+
* options structs. Since the source of these calls will be from Ruby
|
|
160
|
+
* implementation internals we assume it is from a trusted source.
|
|
161
|
+
*
|
|
162
|
+
* `data` is assumed to be a valid pointer pointing to well-formed data. The
|
|
163
|
+
* layout of this data should be the same every time, and is described below:
|
|
164
|
+
*
|
|
165
|
+
* | # bytes | field |
|
|
166
|
+
* | ------- | -------------------------- |
|
|
167
|
+
* | `4` | the length of the filepath |
|
|
168
|
+
* | ... | the filepath bytes |
|
|
169
|
+
* | `4` | the line number |
|
|
170
|
+
* | `4` | the length the encoding |
|
|
171
|
+
* | ... | the encoding bytes |
|
|
172
|
+
* | `1` | frozen string literal |
|
|
173
|
+
* | `1` | -p command line option |
|
|
174
|
+
* | `1` | -n command line option |
|
|
175
|
+
* | `1` | -l command line option |
|
|
176
|
+
* | `1` | -a command line option |
|
|
177
|
+
* | `1` | the version |
|
|
178
|
+
* | `1` | encoding locked |
|
|
179
|
+
* | `1` | main script |
|
|
180
|
+
* | `1` | partial script |
|
|
181
|
+
* | `1` | freeze |
|
|
182
|
+
* | `4` | the number of scopes |
|
|
183
|
+
* | ... | the scopes |
|
|
184
|
+
*
|
|
185
|
+
* The version field is an enum, so it should be one of the following values:
|
|
186
|
+
*
|
|
187
|
+
* | value | version |
|
|
188
|
+
* | ----- | ------------------------- |
|
|
189
|
+
* | `0` | use the latest version of prism |
|
|
190
|
+
* | `1` | use the version of prism that is vendored in CRuby 3.3.0 |
|
|
191
|
+
* | `2` | use the version of prism that is vendored in CRuby 3.4.0 |
|
|
192
|
+
* | `3` | use the version of prism that is vendored in CRuby 4.0.0 |
|
|
193
|
+
* | `4` | use the version of prism that is vendored in CRuby 4.1.0 |
|
|
194
|
+
*
|
|
195
|
+
* Each scope is laid out as follows:
|
|
196
|
+
*
|
|
197
|
+
* | # bytes | field |
|
|
198
|
+
* | ------- | -------------------------- |
|
|
199
|
+
* | `4` | the number of locals |
|
|
200
|
+
* | `1` | the forwarding flags |
|
|
201
|
+
* | ... | the locals |
|
|
202
|
+
*
|
|
203
|
+
* Each local is laid out as follows:
|
|
204
|
+
*
|
|
205
|
+
* | # bytes | field |
|
|
206
|
+
* | ------- | -------------------------- |
|
|
207
|
+
* | `4` | the length of the local |
|
|
208
|
+
* | ... | the local bytes |
|
|
209
|
+
*
|
|
210
|
+
* Some additional things to note about this layout:
|
|
211
|
+
*
|
|
212
|
+
* * The filepath can have a length of 0, in which case we'll consider it an
|
|
213
|
+
* empty string.
|
|
214
|
+
* * The line number should be 0-indexed.
|
|
215
|
+
* * The encoding can have a length of 0, in which case we'll use the default
|
|
216
|
+
* encoding (UTF-8). If it's not 0, it should correspond to a name of an
|
|
217
|
+
* encoding that can be passed to `Encoding.find` in Ruby.
|
|
218
|
+
* * The frozen string literal, encoding locked, main script, and partial script
|
|
219
|
+
* fields are booleans, so their values should be either 0 or 1.
|
|
220
|
+
* * The number of scopes can be 0.
|
|
221
|
+
*/
|
|
222
|
+
void pm_options_read(pm_options_t *options, const char *data);
|
|
223
|
+
|
|
224
|
+
#endif
|