did_you_mean 0.5.0 → 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +12 -4
- data/Appraisals +6 -0
- data/Gemfile +14 -0
- data/README.md +69 -13
- data/Rakefile +47 -22
- data/did_you_mean.gemspec +3 -5
- data/docs/did_you_mean_example.png +0 -0
- data/ext/did_you_mean/extconf.rb +16 -11
- data/ext/did_you_mean/org/yukinishijima/ReceiverCapturer.java +58 -0
- data/ext/did_you_mean/ruby_headers/210/id.h +11 -9
- data/ext/did_you_mean/ruby_headers/210/version.h +6 -6
- data/ext/did_you_mean/ruby_headers/211/addr2line.h +21 -0
- data/ext/did_you_mean/ruby_headers/211/constant.h +36 -0
- data/ext/did_you_mean/ruby_headers/211/dln.h +51 -0
- data/ext/did_you_mean/ruby_headers/211/encdb.h +170 -0
- data/ext/did_you_mean/ruby_headers/211/eval_intern.h +260 -0
- data/ext/did_you_mean/ruby_headers/211/gc.h +101 -0
- data/ext/did_you_mean/ruby_headers/211/id.h +173 -0
- data/ext/did_you_mean/ruby_headers/211/internal.h +889 -0
- data/ext/did_you_mean/ruby_headers/211/iseq.h +136 -0
- data/ext/did_you_mean/ruby_headers/211/method.h +142 -0
- data/ext/did_you_mean/ruby_headers/211/node.h +543 -0
- data/ext/did_you_mean/ruby_headers/211/parse.h +183 -0
- data/ext/did_you_mean/ruby_headers/211/probes.h +83 -0
- data/ext/did_you_mean/ruby_headers/211/probes_helper.h +67 -0
- data/ext/did_you_mean/ruby_headers/211/regenc.h +223 -0
- data/ext/did_you_mean/ruby_headers/211/regint.h +911 -0
- data/ext/did_you_mean/ruby_headers/211/regparse.h +363 -0
- data/ext/did_you_mean/ruby_headers/211/revision.h +1 -0
- data/ext/did_you_mean/ruby_headers/211/ruby_atomic.h +170 -0
- data/ext/did_you_mean/ruby_headers/211/siphash.h +48 -0
- data/ext/did_you_mean/ruby_headers/211/thread_native.h +23 -0
- data/ext/did_you_mean/ruby_headers/211/thread_pthread.h +56 -0
- data/ext/did_you_mean/ruby_headers/211/thread_win32.h +45 -0
- data/ext/did_you_mean/ruby_headers/211/timev.h +42 -0
- data/ext/did_you_mean/ruby_headers/211/transcode_data.h +123 -0
- data/ext/did_you_mean/ruby_headers/211/transdb.h +190 -0
- data/ext/did_you_mean/ruby_headers/211/verconf.h +13 -0
- data/ext/did_you_mean/ruby_headers/211/version.h +52 -0
- data/ext/did_you_mean/ruby_headers/211/vm_core.h +1043 -0
- data/ext/did_you_mean/ruby_headers/211/vm_debug.h +37 -0
- data/ext/did_you_mean/ruby_headers/211/vm_exec.h +182 -0
- data/ext/did_you_mean/ruby_headers/211/vm_insnhelper.h +273 -0
- data/ext/did_you_mean/ruby_headers/211/vm_opts.h +56 -0
- data/ext/did_you_mean/ruby_headers/212/addr2line.h +21 -0
- data/ext/did_you_mean/ruby_headers/212/constant.h +36 -0
- data/ext/did_you_mean/ruby_headers/212/dln.h +51 -0
- data/ext/did_you_mean/ruby_headers/212/encdb.h +170 -0
- data/ext/did_you_mean/ruby_headers/212/eval_intern.h +260 -0
- data/ext/did_you_mean/ruby_headers/212/gc.h +101 -0
- data/ext/did_you_mean/ruby_headers/212/id.h +173 -0
- data/ext/did_you_mean/ruby_headers/212/internal.h +889 -0
- data/ext/did_you_mean/ruby_headers/212/iseq.h +136 -0
- data/ext/did_you_mean/ruby_headers/212/method.h +142 -0
- data/ext/did_you_mean/ruby_headers/212/node.h +543 -0
- data/ext/did_you_mean/ruby_headers/212/parse.h +183 -0
- data/ext/did_you_mean/ruby_headers/212/probes.h +83 -0
- data/ext/did_you_mean/ruby_headers/212/probes_helper.h +67 -0
- data/ext/did_you_mean/ruby_headers/212/regenc.h +223 -0
- data/ext/did_you_mean/ruby_headers/212/regint.h +911 -0
- data/ext/did_you_mean/ruby_headers/212/regparse.h +363 -0
- data/ext/did_you_mean/ruby_headers/212/revision.h +1 -0
- data/ext/did_you_mean/ruby_headers/212/ruby_atomic.h +170 -0
- data/ext/did_you_mean/ruby_headers/212/siphash.h +48 -0
- data/ext/did_you_mean/ruby_headers/212/thread_native.h +23 -0
- data/ext/did_you_mean/ruby_headers/212/thread_pthread.h +56 -0
- data/ext/did_you_mean/ruby_headers/212/thread_win32.h +45 -0
- data/ext/did_you_mean/ruby_headers/212/timev.h +42 -0
- data/ext/did_you_mean/ruby_headers/212/transcode_data.h +123 -0
- data/ext/did_you_mean/ruby_headers/212/transdb.h +190 -0
- data/ext/did_you_mean/ruby_headers/212/verconf.h +13 -0
- data/ext/did_you_mean/ruby_headers/212/version.h +52 -0
- data/ext/did_you_mean/ruby_headers/212/vm_core.h +1043 -0
- data/ext/did_you_mean/ruby_headers/212/vm_debug.h +37 -0
- data/ext/did_you_mean/ruby_headers/212/vm_exec.h +182 -0
- data/ext/did_you_mean/ruby_headers/212/vm_insnhelper.h +273 -0
- data/ext/did_you_mean/ruby_headers/212/vm_opts.h +56 -0
- data/ext/did_you_mean/ruby_headers/213/addr2line.h +21 -0
- data/ext/did_you_mean/ruby_headers/213/constant.h +36 -0
- data/ext/did_you_mean/ruby_headers/213/dln.h +51 -0
- data/ext/did_you_mean/ruby_headers/213/encdb.h +170 -0
- data/ext/did_you_mean/ruby_headers/213/eval_intern.h +270 -0
- data/ext/did_you_mean/ruby_headers/213/gc.h +101 -0
- data/ext/did_you_mean/ruby_headers/213/id.h +173 -0
- data/ext/did_you_mean/ruby_headers/213/internal.h +892 -0
- data/ext/did_you_mean/ruby_headers/213/iseq.h +136 -0
- data/ext/did_you_mean/ruby_headers/213/method.h +142 -0
- data/ext/did_you_mean/ruby_headers/213/node.h +543 -0
- data/ext/did_you_mean/ruby_headers/213/parse.h +183 -0
- data/ext/did_you_mean/ruby_headers/213/probes.h +83 -0
- data/ext/did_you_mean/ruby_headers/213/probes_helper.h +67 -0
- data/ext/did_you_mean/ruby_headers/213/regenc.h +223 -0
- data/ext/did_you_mean/ruby_headers/213/regint.h +911 -0
- data/ext/did_you_mean/ruby_headers/213/regparse.h +363 -0
- data/ext/did_you_mean/ruby_headers/213/revision.h +1 -0
- data/ext/did_you_mean/ruby_headers/213/ruby_atomic.h +170 -0
- data/ext/did_you_mean/ruby_headers/213/siphash.h +48 -0
- data/ext/did_you_mean/ruby_headers/213/thread_native.h +23 -0
- data/ext/did_you_mean/ruby_headers/213/thread_pthread.h +56 -0
- data/ext/did_you_mean/ruby_headers/213/thread_win32.h +45 -0
- data/ext/did_you_mean/ruby_headers/213/timev.h +42 -0
- data/ext/did_you_mean/ruby_headers/213/transcode_data.h +123 -0
- data/ext/did_you_mean/ruby_headers/213/transdb.h +190 -0
- data/ext/did_you_mean/ruby_headers/213/verconf.h +13 -0
- data/ext/did_you_mean/ruby_headers/213/version.h +52 -0
- data/ext/did_you_mean/ruby_headers/213/vm_core.h +1052 -0
- data/ext/did_you_mean/ruby_headers/213/vm_debug.h +37 -0
- data/ext/did_you_mean/ruby_headers/213/vm_exec.h +182 -0
- data/ext/did_you_mean/ruby_headers/213/vm_insnhelper.h +273 -0
- data/ext/did_you_mean/ruby_headers/213/vm_opts.h +56 -0
- data/ext/did_you_mean/ruby_headers/214/addr2line.h +21 -0
- data/ext/did_you_mean/ruby_headers/214/constant.h +36 -0
- data/ext/did_you_mean/ruby_headers/214/dln.h +51 -0
- data/ext/did_you_mean/ruby_headers/214/encdb.h +170 -0
- data/ext/did_you_mean/ruby_headers/214/eval_intern.h +270 -0
- data/ext/did_you_mean/ruby_headers/214/gc.h +101 -0
- data/ext/did_you_mean/ruby_headers/214/id.h +173 -0
- data/ext/did_you_mean/ruby_headers/214/internal.h +892 -0
- data/ext/did_you_mean/ruby_headers/214/iseq.h +136 -0
- data/ext/did_you_mean/ruby_headers/214/method.h +142 -0
- data/ext/did_you_mean/ruby_headers/214/node.h +543 -0
- data/ext/did_you_mean/ruby_headers/214/parse.h +183 -0
- data/ext/did_you_mean/ruby_headers/214/probes.h +83 -0
- data/ext/did_you_mean/ruby_headers/214/probes_helper.h +67 -0
- data/ext/did_you_mean/ruby_headers/214/regenc.h +223 -0
- data/ext/did_you_mean/ruby_headers/214/regint.h +911 -0
- data/ext/did_you_mean/ruby_headers/214/regparse.h +363 -0
- data/ext/did_you_mean/ruby_headers/214/revision.h +1 -0
- data/ext/did_you_mean/ruby_headers/214/ruby_atomic.h +170 -0
- data/ext/did_you_mean/ruby_headers/214/siphash.h +48 -0
- data/ext/did_you_mean/ruby_headers/214/thread_native.h +23 -0
- data/ext/did_you_mean/ruby_headers/214/thread_pthread.h +56 -0
- data/ext/did_you_mean/ruby_headers/214/thread_win32.h +45 -0
- data/ext/did_you_mean/ruby_headers/214/timev.h +42 -0
- data/ext/did_you_mean/ruby_headers/214/transcode_data.h +123 -0
- data/ext/did_you_mean/ruby_headers/214/transdb.h +190 -0
- data/ext/did_you_mean/ruby_headers/214/verconf.h +13 -0
- data/ext/did_you_mean/ruby_headers/214/version.h +52 -0
- data/ext/did_you_mean/ruby_headers/214/vm_core.h +1055 -0
- data/ext/did_you_mean/ruby_headers/214/vm_debug.h +37 -0
- data/ext/did_you_mean/ruby_headers/214/vm_exec.h +182 -0
- data/ext/did_you_mean/ruby_headers/214/vm_insnhelper.h +273 -0
- data/ext/did_you_mean/ruby_headers/214/vm_opts.h +56 -0
- data/ext/did_you_mean/ruby_headers/220/addr2line.h +1 -1
- data/ext/did_you_mean/ruby_headers/220/ccan/build_assert/build_assert.h +40 -0
- data/ext/did_you_mean/ruby_headers/220/ccan/check_type/check_type.h +63 -0
- data/ext/did_you_mean/ruby_headers/220/ccan/container_of/container_of.h +106 -0
- data/ext/did_you_mean/ruby_headers/220/ccan/licenses/BSD-MIT +17 -0
- data/ext/did_you_mean/ruby_headers/220/ccan/licenses/CC0 +28 -0
- data/ext/did_you_mean/ruby_headers/220/ccan/list/list.h +602 -0
- data/ext/did_you_mean/ruby_headers/220/ccan/str/str.h +16 -0
- data/ext/did_you_mean/ruby_headers/220/constant.h +10 -3
- data/ext/did_you_mean/ruby_headers/220/eval_intern.h +24 -5
- data/ext/did_you_mean/ruby_headers/220/gc.h +5 -0
- data/ext/did_you_mean/ruby_headers/220/id.h +11 -9
- data/ext/did_you_mean/ruby_headers/220/internal.h +116 -21
- data/ext/did_you_mean/ruby_headers/220/iseq.h +28 -7
- data/ext/did_you_mean/ruby_headers/220/method.h +0 -1
- data/ext/did_you_mean/ruby_headers/220/node.h +5 -4
- data/ext/did_you_mean/ruby_headers/220/regenc.h +18 -7
- data/ext/did_you_mean/ruby_headers/220/regint.h +72 -11
- data/ext/did_you_mean/ruby_headers/220/regparse.h +2 -2
- data/ext/did_you_mean/ruby_headers/220/ruby_atomic.h +2 -2
- data/ext/did_you_mean/ruby_headers/220/symbol.h +87 -0
- data/ext/did_you_mean/ruby_headers/220/thread_pthread.h +4 -6
- data/ext/did_you_mean/ruby_headers/220/thread_win32.h +0 -9
- data/ext/did_you_mean/ruby_headers/220/timev.h +2 -2
- data/ext/did_you_mean/ruby_headers/220/version.h +3 -3
- data/ext/did_you_mean/ruby_headers/220/vm_core.h +200 -65
- data/ext/did_you_mean/ruby_headers/220/vm_insnhelper.h +0 -40
- data/gemfiles/activerecord_30.gemfile +14 -0
- data/gemfiles/activerecord_31.gemfile +14 -0
- data/gemfiles/activerecord_32.gemfile +14 -0
- data/gemfiles/activerecord_40.gemfile +14 -0
- data/gemfiles/activerecord_41.gemfile +14 -0
- data/gemfiles/activerecord_42.gemfile +21 -0
- data/gemfiles/activerecord_edge.gemfile +16 -0
- data/lib/did_you_mean.rb +14 -4
- data/lib/did_you_mean/core_ext/name_error.rb +11 -44
- data/lib/did_you_mean/finders.rb +31 -0
- data/lib/did_you_mean/finders/name_error_finders.rb +24 -0
- data/lib/did_you_mean/finders/name_error_finders/similar_class_finder.rb +50 -0
- data/lib/did_you_mean/finders/name_error_finders/similar_name_finder.rb +61 -0
- data/lib/did_you_mean/finders/similar_attribute_finder.rb +26 -0
- data/lib/did_you_mean/finders/similar_method_finder.rb +42 -0
- data/lib/did_you_mean/levenshtein.rb +49 -0
- data/lib/did_you_mean/test_helper.rb +11 -0
- data/lib/did_you_mean/version.rb +1 -1
- data/lib/did_you_mean/word_collection.rb +27 -0
- data/test/all_test.rb +16 -2
- data/test/name_error_extension_test.rb +24 -0
- data/test/no_method_error_extension_test.rb +20 -0
- data/test/null_finder_test.rb +19 -0
- data/test/similar_attribute_finder_test.rb +2 -6
- data/test/similar_class_finder_test.rb +85 -0
- data/test/similar_method_finder_test.rb +16 -35
- data/test/similar_name_finder_test.rb +31 -23
- data/test/test_helper.rb +19 -11
- metadata +168 -45
- data/docs/better_errors_example.png +0 -0
- data/docs/irb_example.png +0 -0
- data/docs/rspec_example.png +0 -0
- data/lib/did_you_mean/method_finder.rb +0 -24
- data/lib/did_you_mean/strategies.rb +0 -23
- data/lib/did_you_mean/strategies/similar_attribute_finder.rb +0 -41
- data/lib/did_you_mean/strategies/similar_method_finder.rb +0 -46
- data/lib/did_you_mean/strategies/similar_name_finder.rb +0 -57
- data/test.sh +0 -18
@@ -17,6 +17,7 @@ RUBY_SYMBOL_EXPORT_BEGIN
|
|
17
17
|
/* compile.c */
|
18
18
|
VALUE rb_iseq_compile_node(VALUE self, NODE *node);
|
19
19
|
int rb_iseq_translate_threaded_code(rb_iseq_t *iseq);
|
20
|
+
VALUE *rb_iseq_original_iseq(rb_iseq_t *iseq);
|
20
21
|
VALUE rb_iseq_build_from_ary(rb_iseq_t *iseq, VALUE locals, VALUE args,
|
21
22
|
VALUE exception, VALUE body);
|
22
23
|
|
@@ -62,21 +63,41 @@ struct iseq_catch_table_entry {
|
|
62
63
|
CATCH_TYPE_NEXT = INT2FIX(6)
|
63
64
|
} type;
|
64
65
|
VALUE iseq;
|
65
|
-
unsigned
|
66
|
-
unsigned
|
67
|
-
unsigned
|
68
|
-
unsigned
|
66
|
+
unsigned int start;
|
67
|
+
unsigned int end;
|
68
|
+
unsigned int cont;
|
69
|
+
unsigned int sp;
|
69
70
|
};
|
70
71
|
|
72
|
+
PACKED_STRUCT_UNALIGNED(struct iseq_catch_table {
|
73
|
+
int size;
|
74
|
+
struct iseq_catch_table_entry entries[1]; /* flexible array */
|
75
|
+
});
|
76
|
+
|
77
|
+
static inline int
|
78
|
+
iseq_catch_table_bytes(int n)
|
79
|
+
{
|
80
|
+
enum {
|
81
|
+
catch_table_entries_max = (INT_MAX - sizeof(struct iseq_catch_table)) / sizeof(struct iseq_catch_table_entry)
|
82
|
+
};
|
83
|
+
if (n > catch_table_entries_max) rb_fatal("too large iseq_catch_table - %d", n);
|
84
|
+
return (int)(sizeof(struct iseq_catch_table) +
|
85
|
+
(n - 1) * sizeof(struct iseq_catch_table_entry));
|
86
|
+
}
|
87
|
+
|
71
88
|
#define INITIAL_ISEQ_COMPILE_DATA_STORAGE_BUFF_SIZE (512)
|
72
89
|
|
73
90
|
struct iseq_compile_data_storage {
|
74
91
|
struct iseq_compile_data_storage *next;
|
75
|
-
unsigned
|
76
|
-
unsigned
|
77
|
-
char
|
92
|
+
unsigned int pos;
|
93
|
+
unsigned int size;
|
94
|
+
char buff[1]; /* flexible array */
|
78
95
|
};
|
79
96
|
|
97
|
+
/* account for flexible array */
|
98
|
+
#define SIZEOF_ISEQ_COMPILE_DATA_STORAGE \
|
99
|
+
(sizeof(struct iseq_compile_data_storage) - 1)
|
100
|
+
|
80
101
|
struct iseq_compile_data {
|
81
102
|
/* GC is needed */
|
82
103
|
const VALUE err_info;
|
@@ -136,7 +136,6 @@ VALUE rb_obj_method_location(VALUE obj, ID id);
|
|
136
136
|
void rb_mark_method_entry(const rb_method_entry_t *me);
|
137
137
|
void rb_free_method_entry(rb_method_entry_t *me);
|
138
138
|
void rb_sweep_method_entry(void *vm);
|
139
|
-
void rb_free_m_tbl(st_table *tbl);
|
140
139
|
void rb_free_m_tbl_wrapper(struct method_table_wrapper *wrapper);
|
141
140
|
|
142
141
|
#endif /* METHOD_H */
|
@@ -287,7 +287,7 @@ typedef struct RNode {
|
|
287
287
|
#define NODE_LMASK (((SIGNED_VALUE)1<<(sizeof(VALUE)*CHAR_BIT-NODE_LSHIFT))-1)
|
288
288
|
#define nd_line(n) (int)(RNODE(n)->flags>>NODE_LSHIFT)
|
289
289
|
#define nd_set_line(n,l) \
|
290
|
-
RNODE(n)->flags=((RNODE(n)->flags&~(-1<<NODE_LSHIFT))|(((l)&NODE_LMASK)<<NODE_LSHIFT))
|
290
|
+
RNODE(n)->flags=((RNODE(n)->flags&~((VALUE)(-1)<<NODE_LSHIFT))|((VALUE)((l)&NODE_LMASK)<<NODE_LSHIFT))
|
291
291
|
|
292
292
|
#define nd_refinements nd_reserved
|
293
293
|
|
@@ -468,9 +468,7 @@ typedef struct RNode {
|
|
468
468
|
#define roomof(x, y) ((sizeof(x) + sizeof(y) - 1) / sizeof(y))
|
469
469
|
#define MEMO_FOR(type, value) ((type *)RARRAY_PTR(value))
|
470
470
|
#define NEW_MEMO_FOR(type, value) \
|
471
|
-
|
472
|
-
roomof(type, VALUE)), \
|
473
|
-
MEMO_FOR(type, value))
|
471
|
+
((value) = rb_ary_tmp_new_fill(roomof(type, VALUE)), MEMO_FOR(type, value))
|
474
472
|
|
475
473
|
RUBY_SYMBOL_EXPORT_BEGIN
|
476
474
|
|
@@ -495,6 +493,9 @@ NODE *rb_compile_file(const char*, VALUE, int);
|
|
495
493
|
|
496
494
|
NODE *rb_node_newnode(enum node_type,VALUE,VALUE,VALUE);
|
497
495
|
NODE *rb_node_newnode_longlife(enum node_type,VALUE,VALUE,VALUE);
|
496
|
+
void rb_gc_free_node(VALUE obj);
|
497
|
+
size_t rb_node_memsize(VALUE obj);
|
498
|
+
VALUE rb_gc_mark_node(NODE *obj);
|
498
499
|
|
499
500
|
struct rb_global_entry {
|
500
501
|
struct rb_global_variable *var;
|
@@ -29,15 +29,18 @@
|
|
29
29
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
30
30
|
* SUCH DAMAGE.
|
31
31
|
*/
|
32
|
+
|
32
33
|
#ifndef REGINT_H
|
33
34
|
#ifndef RUBY_EXTERN
|
34
35
|
#include "ruby/config.h"
|
35
36
|
#include "ruby/defines.h"
|
36
37
|
#endif
|
38
|
+
#endif
|
39
|
+
|
37
40
|
#ifdef ONIG_ESCAPE_UCHAR_COLLISION
|
38
41
|
#undef ONIG_ESCAPE_UCHAR_COLLISION
|
39
42
|
#endif
|
40
|
-
|
43
|
+
|
41
44
|
#include "ruby/oniguruma.h"
|
42
45
|
|
43
46
|
RUBY_SYMBOL_EXPORT_BEGIN
|
@@ -99,15 +102,22 @@ typedef struct {
|
|
99
102
|
|
100
103
|
|
101
104
|
typedef struct {
|
102
|
-
const UChar *name;
|
103
|
-
int ctype;
|
104
105
|
short int len;
|
106
|
+
const UChar name[6];
|
107
|
+
int ctype;
|
105
108
|
} PosixBracketEntryType;
|
106
109
|
|
107
|
-
#define
|
110
|
+
#define POSIX_BRACKET_ENTRY_INIT(name, ctype) \
|
111
|
+
{(short int )(sizeof(name) - 1), (name), (ctype)}
|
112
|
+
|
113
|
+
#ifndef numberof
|
114
|
+
#define numberof(array) (int )(sizeof(array) / sizeof((array)[0]))
|
115
|
+
#endif
|
116
|
+
|
108
117
|
|
109
118
|
#define USE_CRNL_AS_LINE_TERMINATOR
|
110
119
|
#define USE_UNICODE_PROPERTIES
|
120
|
+
#define USE_UNICODE_AGE_PROPERTIES
|
111
121
|
/* #define USE_UNICODE_CASE_FOLD_TURKISH_AZERI */
|
112
122
|
/* #define USE_UNICODE_ALL_LINE_TERMINATORS */ /* see Unicode.org UTS #18 */
|
113
123
|
|
@@ -158,6 +168,7 @@ ONIG_EXTERN int onigenc_unicode_apply_all_case_fold P_((OnigCaseFoldType flag, O
|
|
158
168
|
|
159
169
|
#define UTF16_IS_SURROGATE_FIRST(c) (((c) & 0xfc) == 0xd8)
|
160
170
|
#define UTF16_IS_SURROGATE_SECOND(c) (((c) & 0xfc) == 0xdc)
|
171
|
+
#define UTF16_IS_SURROGATE(c) (((c) & 0xf8) == 0xd8)
|
161
172
|
|
162
173
|
#define ONIGENC_ISO_8859_1_TO_LOWER_CASE(c) \
|
163
174
|
OnigEncISO_8859_1_ToLowerCaseTable[c]
|
@@ -197,9 +208,9 @@ ONIG_EXTERN const unsigned short OnigEncAsciiCtypeTable[];
|
|
197
208
|
|
198
209
|
|
199
210
|
#ifdef ONIG_ENC_REGISTER
|
200
|
-
extern int ONIG_ENC_REGISTER(const char *,
|
211
|
+
extern int ONIG_ENC_REGISTER(const char *, OnigEncoding);
|
201
212
|
#define OnigEncodingName(n) encoding_##n
|
202
|
-
#define OnigEncodingDeclare(n) static OnigEncodingType OnigEncodingName(n)
|
213
|
+
#define OnigEncodingDeclare(n) static const OnigEncodingType OnigEncodingName(n)
|
203
214
|
#define OnigEncodingDefine(f,n) \
|
204
215
|
OnigEncodingDeclare(n); \
|
205
216
|
void Init_##f(void) { \
|
@@ -209,7 +220,7 @@ extern int ONIG_ENC_REGISTER(const char *, OnigEncodingType*);
|
|
209
220
|
OnigEncodingDeclare(n)
|
210
221
|
#else
|
211
222
|
#define OnigEncodingName(n) OnigEncoding##n
|
212
|
-
#define OnigEncodingDeclare(n) OnigEncodingType OnigEncodingName(n)
|
223
|
+
#define OnigEncodingDeclare(n) const OnigEncodingType OnigEncodingName(n)
|
213
224
|
#define OnigEncodingDefine(f,n) OnigEncodingDeclare(n)
|
214
225
|
#endif
|
215
226
|
|
@@ -5,7 +5,7 @@
|
|
5
5
|
**********************************************************************/
|
6
6
|
/*-
|
7
7
|
* Copyright (c) 2002-2008 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
|
8
|
-
* Copyright (c) 2011-
|
8
|
+
* Copyright (c) 2011-2014 K.Takata <kentkt AT csc DOT jp>
|
9
9
|
* All rights reserved.
|
10
10
|
*
|
11
11
|
* Redistribution and use in source and binary forms, with or without
|
@@ -50,6 +50,7 @@
|
|
50
50
|
|
51
51
|
#if defined(__i386) || defined(__i386__) || defined(_M_IX86) || \
|
52
52
|
defined(__x86_64) || defined(__x86_64__) || defined(_M_AMD64) || \
|
53
|
+
defined(__powerpc64__) || \
|
53
54
|
defined(__mc68020__)
|
54
55
|
#define PLATFORM_UNALIGNED_WORD_ACCESS
|
55
56
|
#endif
|
@@ -92,8 +93,6 @@
|
|
92
93
|
# define ARG_UNUSED
|
93
94
|
#endif
|
94
95
|
|
95
|
-
/* */
|
96
|
-
/* escape other system UChar definition */
|
97
96
|
#ifndef RUBY_DEFINES_H
|
98
97
|
#include "ruby/ruby.h"
|
99
98
|
#undef xmalloc
|
@@ -101,23 +100,67 @@
|
|
101
100
|
#undef xcalloc
|
102
101
|
#undef xfree
|
103
102
|
#endif
|
103
|
+
|
104
|
+
/* */
|
105
|
+
/* escape other system UChar definition */
|
104
106
|
#ifdef ONIG_ESCAPE_UCHAR_COLLISION
|
105
107
|
#undef ONIG_ESCAPE_UCHAR_COLLISION
|
106
108
|
#endif
|
109
|
+
|
107
110
|
#define USE_WORD_BEGIN_END /* "\<": word-begin, "\>": word-end */
|
108
|
-
#undef USE_MATCH_RANGE_IS_COMPLETE_RANGE
|
109
111
|
#undef USE_CAPTURE_HISTORY
|
110
112
|
#define USE_VARIABLE_META_CHARS
|
111
113
|
#define USE_POSIX_API_REGION_OPTION /* needed for POSIX API support */
|
112
114
|
#define USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE
|
113
115
|
/* #define USE_COMBINATION_EXPLOSION_CHECK */ /* (X*)* */
|
114
116
|
|
117
|
+
/* multithread config */
|
115
118
|
/* #define USE_MULTI_THREAD_SYSTEM */
|
119
|
+
/* #define USE_DEFAULT_MULTI_THREAD_SYSTEM */
|
120
|
+
|
121
|
+
#if defined(USE_MULTI_THREAD_SYSTEM) \
|
122
|
+
&& defined(USE_DEFAULT_MULTI_THREAD_SYSTEM)
|
123
|
+
|
124
|
+
#ifdef _WIN32
|
125
|
+
#define WIN32_LEAN_AND_MEAN
|
126
|
+
#include <windows.h>
|
127
|
+
extern CRITICAL_SECTION gOnigMutex;
|
128
|
+
#define THREAD_SYSTEM_INIT InitializeCriticalSection(&gOnigMutex)
|
129
|
+
#define THREAD_SYSTEM_END DeleteCriticalSection(&gOnigMutex)
|
130
|
+
#define THREAD_ATOMIC_START EnterCriticalSection(&gOnigMutex)
|
131
|
+
#define THREAD_ATOMIC_END LeaveCriticalSection(&gOnigMutex)
|
132
|
+
#define THREAD_PASS Sleep(0)
|
133
|
+
#else /* _WIN32 */
|
134
|
+
#include <pthread.h>
|
135
|
+
#include <sched.h>
|
136
|
+
extern pthread_mutex_t gOnigMutex;
|
137
|
+
#define THREAD_SYSTEM_INIT pthread_mutex_init(&gOnigMutex, NULL)
|
138
|
+
#define THREAD_SYSTEM_END pthread_mutex_destroy(&gOnigMutex)
|
139
|
+
#define THREAD_ATOMIC_START pthread_mutex_lock(&gOnigMutex)
|
140
|
+
#define THREAD_ATOMIC_END pthread_mutex_unlock(&gOnigMutex)
|
141
|
+
#define THREAD_PASS sched_yield()
|
142
|
+
#endif /* _WIN32 */
|
143
|
+
|
144
|
+
#else /* USE_DEFAULT_MULTI_THREAD_SYSTEM */
|
145
|
+
|
146
|
+
#ifndef THREAD_SYSTEM_INIT
|
116
147
|
#define THREAD_SYSTEM_INIT /* depend on thread system */
|
148
|
+
#endif
|
149
|
+
#ifndef THREAD_SYSTEM_END
|
117
150
|
#define THREAD_SYSTEM_END /* depend on thread system */
|
151
|
+
#endif
|
152
|
+
#ifndef THREAD_ATOMIC_START
|
118
153
|
#define THREAD_ATOMIC_START /* depend on thread system */
|
154
|
+
#endif
|
155
|
+
#ifndef THREAD_ATOMIC_END
|
119
156
|
#define THREAD_ATOMIC_END /* depend on thread system */
|
157
|
+
#endif
|
158
|
+
#ifndef THREAD_PASS
|
120
159
|
#define THREAD_PASS /* depend on thread system */
|
160
|
+
#endif
|
161
|
+
|
162
|
+
#endif /* USE_DEFAULT_MULTI_THREAD_SYSTEM */
|
163
|
+
|
121
164
|
#ifndef xmalloc
|
122
165
|
#define xmalloc malloc
|
123
166
|
#define xrealloc realloc
|
@@ -150,6 +193,8 @@
|
|
150
193
|
#define USE_UPPER_CASE_TABLE
|
151
194
|
#else
|
152
195
|
|
196
|
+
#define CHECK_INTERRUPT_IN_MATCH_AT
|
197
|
+
|
153
198
|
#define st_init_table onig_st_init_table
|
154
199
|
#define st_init_table_with_size onig_st_init_table_with_size
|
155
200
|
#define st_init_numtable onig_st_init_numtable
|
@@ -170,8 +215,6 @@
|
|
170
215
|
/* */
|
171
216
|
#define onig_st_is_member st_is_member
|
172
217
|
|
173
|
-
#define CHECK_INTERRUPT_IN_MATCH_AT
|
174
|
-
|
175
218
|
#endif
|
176
219
|
|
177
220
|
#define STATE_CHECK_STRING_THRESHOLD_LEN 7
|
@@ -235,12 +278,16 @@
|
|
235
278
|
# include <stdint.h>
|
236
279
|
#endif
|
237
280
|
|
281
|
+
#ifdef HAVE_INTTYPES_H
|
282
|
+
# include <inttypes.h>
|
283
|
+
#endif
|
284
|
+
|
238
285
|
#ifdef STDC_HEADERS
|
239
286
|
# include <stddef.h>
|
240
287
|
#endif
|
241
288
|
|
242
|
-
#ifdef
|
243
|
-
#include <malloc.h>
|
289
|
+
#ifdef _WIN32
|
290
|
+
#include <malloc.h> /* for alloca() */
|
244
291
|
#endif
|
245
292
|
|
246
293
|
#ifdef ONIG_DEBUG
|
@@ -260,6 +307,18 @@ typedef unsigned int uintptr_t;
|
|
260
307
|
#endif
|
261
308
|
#endif /* _WIN32 */
|
262
309
|
|
310
|
+
#ifndef PRIdPTR
|
311
|
+
#ifdef _WIN64
|
312
|
+
#define PRIdPTR "I64d"
|
313
|
+
#define PRIuPTR "I64u"
|
314
|
+
#define PRIxPTR "I64x"
|
315
|
+
#else
|
316
|
+
#define PRIdPTR "ld"
|
317
|
+
#define PRIuPTR "lu"
|
318
|
+
#define PRIxPTR "lx"
|
319
|
+
#endif
|
320
|
+
#endif
|
321
|
+
|
263
322
|
#include "regenc.h"
|
264
323
|
|
265
324
|
RUBY_SYMBOL_EXPORT_BEGIN
|
@@ -333,7 +392,7 @@ typedef unsigned int BitStatusType;
|
|
333
392
|
#define BIT_STATUS_CLEAR(stats) (stats) = 0
|
334
393
|
#define BIT_STATUS_ON_ALL(stats) (stats) = ~((BitStatusType )0)
|
335
394
|
#define BIT_STATUS_AT(stats,n) \
|
336
|
-
((n) < (int )BIT_STATUS_BITS_NUM ? ((stats) & (1 << n)) : ((stats) & 1))
|
395
|
+
((n) < (int )BIT_STATUS_BITS_NUM ? ((stats) & ((BitStatusType)1 << n)) : ((stats) & 1))
|
337
396
|
|
338
397
|
#define BIT_STATUS_ON_AT(stats,n) do {\
|
339
398
|
if ((n) < (int )BIT_STATUS_BITS_NUM) \
|
@@ -366,6 +425,8 @@ typedef unsigned int BitStatusType;
|
|
366
425
|
(ONIG_OPTION_FIND_LONGEST | ONIG_OPTION_FIND_NOT_EMPTY))
|
367
426
|
#define IS_NOTBOL(option) ((option) & ONIG_OPTION_NOTBOL)
|
368
427
|
#define IS_NOTEOL(option) ((option) & ONIG_OPTION_NOTEOL)
|
428
|
+
#define IS_NOTBOS(option) ((option) & ONIG_OPTION_NOTBOS)
|
429
|
+
#define IS_NOTEOS(option) ((option) & ONIG_OPTION_NOTEOS)
|
369
430
|
#define IS_POSIX_REGION(option) ((option) & ONIG_OPTION_POSIX_REGION)
|
370
431
|
#define IS_ASCII_RANGE(option) ((option) & ONIG_OPTION_ASCII_RANGE)
|
371
432
|
#define IS_POSIX_BRACKET_ALL_RANGE(option) ((option) & ONIG_OPTION_POSIX_BRACKET_ALL_RANGE)
|
@@ -407,7 +468,7 @@ typedef Bits* BitSetRef;
|
|
407
468
|
} while (0)
|
408
469
|
|
409
470
|
#define BS_ROOM(bs,pos) (bs)[(int )(pos) / BITS_IN_ROOM]
|
410
|
-
#define BS_BIT(pos) (
|
471
|
+
#define BS_BIT(pos) (1U << ((int )(pos) % BITS_IN_ROOM))
|
411
472
|
|
412
473
|
#define BITSET_AT(bs, pos) (BS_ROOM(bs,pos) & BS_BIT(pos))
|
413
474
|
#define BITSET_SET_BIT(bs, pos) BS_ROOM(bs,pos) |= BS_BIT(pos)
|
@@ -852,7 +913,7 @@ typedef struct {
|
|
852
913
|
|
853
914
|
extern OnigOpInfoType OnigOpInfo[];
|
854
915
|
|
855
|
-
|
916
|
+
extern void onig_print_compiled_byte_code P_((FILE* f, UChar* bp, UChar* bpend, UChar** nextp, OnigEncoding enc));
|
856
917
|
|
857
918
|
#ifdef ONIG_DEBUG_STATISTICS
|
858
919
|
extern void onig_statistics_init P_((void));
|
@@ -193,8 +193,8 @@ typedef struct {
|
|
193
193
|
int type;
|
194
194
|
int regnum;
|
195
195
|
OnigOptionType option;
|
196
|
-
struct _Node* target;
|
197
196
|
AbsAddrType call_addr;
|
197
|
+
struct _Node* target;
|
198
198
|
/* for multiple call reference */
|
199
199
|
OnigDistance min_len; /* min length (byte) */
|
200
200
|
OnigDistance max_len; /* max length (byte) */
|
@@ -296,10 +296,10 @@ typedef struct {
|
|
296
296
|
UChar* error;
|
297
297
|
UChar* error_end;
|
298
298
|
regex_t* reg; /* for reg->names only */
|
299
|
-
int num_call;
|
300
299
|
#ifdef USE_SUBEXP_CALL
|
301
300
|
UnsetAddrList* unset_addr_list;
|
302
301
|
#endif
|
302
|
+
int num_call;
|
303
303
|
int num_mem;
|
304
304
|
#ifdef USE_NAMED_GROUP
|
305
305
|
int num_named;
|
@@ -7,7 +7,7 @@ typedef unsigned int rb_atomic_t;
|
|
7
7
|
# define ATOMIC_SET(var, val) (void)__atomic_exchange_n(&(var), (val), __ATOMIC_SEQ_CST)
|
8
8
|
# define ATOMIC_INC(var) __atomic_fetch_add(&(var), 1, __ATOMIC_SEQ_CST)
|
9
9
|
# define ATOMIC_DEC(var) __atomic_fetch_sub(&(var), 1, __ATOMIC_SEQ_CST)
|
10
|
-
# define ATOMIC_OR(var, val)
|
10
|
+
# define ATOMIC_OR(var, val) __atomic_fetch_or(&(var), (val), __ATOMIC_SEQ_CST)
|
11
11
|
# define ATOMIC_EXCHANGE(var, val) __atomic_exchange_n(&(var), (val), __ATOMIC_SEQ_CST)
|
12
12
|
# define ATOMIC_CAS(var, oldval, newval) \
|
13
13
|
({ __typeof__(oldval) oldvaldup = (oldval); /* oldval should not be modified */ \
|
@@ -28,7 +28,7 @@ typedef unsigned int rb_atomic_t; /* Anything OK */
|
|
28
28
|
# define ATOMIC_SET(var, val) (void)__sync_lock_test_and_set(&(var), (val))
|
29
29
|
# define ATOMIC_INC(var) __sync_fetch_and_add(&(var), 1)
|
30
30
|
# define ATOMIC_DEC(var) __sync_fetch_and_sub(&(var), 1)
|
31
|
-
# define ATOMIC_OR(var, val)
|
31
|
+
# define ATOMIC_OR(var, val) __sync_fetch_and_or(&(var), (val))
|
32
32
|
# define ATOMIC_EXCHANGE(var, val) __sync_lock_test_and_set(&(var), (val))
|
33
33
|
# define ATOMIC_CAS(var, oldval, newval) __sync_val_compare_and_swap(&(var), (oldval), (newval))
|
34
34
|
|
@@ -0,0 +1,87 @@
|
|
1
|
+
/**********************************************************************
|
2
|
+
|
3
|
+
symbol.h -
|
4
|
+
|
5
|
+
$Author$
|
6
|
+
created at: Tue Jul 8 15:49:54 JST 2014
|
7
|
+
|
8
|
+
Copyright (C) 2014 Yukihiro Matsumoto
|
9
|
+
|
10
|
+
**********************************************************************/
|
11
|
+
|
12
|
+
#ifndef RUBY_SYMBOL_H
|
13
|
+
#define RUBY_SYMBOL_H 1
|
14
|
+
|
15
|
+
#include "id.h"
|
16
|
+
|
17
|
+
#define DYNAMIC_ID_P(id) (!(id&ID_STATIC_SYM)&&id>tLAST_OP_ID)
|
18
|
+
#define STATIC_ID2SYM(id) (((VALUE)(id)<<RUBY_SPECIAL_SHIFT)|SYMBOL_FLAG)
|
19
|
+
|
20
|
+
#ifdef __GNUC__
|
21
|
+
#define rb_id2sym(id) \
|
22
|
+
__extension__(__builtin_constant_p(id) && !DYNAMIC_ID_P(id) ? \
|
23
|
+
STATIC_ID2SYM(id) : rb_id2sym(id))
|
24
|
+
#endif
|
25
|
+
|
26
|
+
struct RSymbol {
|
27
|
+
struct RBasic basic;
|
28
|
+
VALUE fstr;
|
29
|
+
ID id;
|
30
|
+
};
|
31
|
+
|
32
|
+
#define RSYMBOL(obj) (R_CAST(RSymbol)(obj))
|
33
|
+
|
34
|
+
static inline int
|
35
|
+
id_type(ID id)
|
36
|
+
{
|
37
|
+
if (id<=tLAST_OP_ID) {
|
38
|
+
return -1;
|
39
|
+
}
|
40
|
+
return (int)(id&ID_SCOPE_MASK);
|
41
|
+
}
|
42
|
+
|
43
|
+
#define is_notop_id(id) ((id)>tLAST_OP_ID)
|
44
|
+
#define is_local_id(id) (id_type(id)==ID_LOCAL)
|
45
|
+
#define is_global_id(id) (id_type(id)==ID_GLOBAL)
|
46
|
+
#define is_instance_id(id) (id_type(id)==ID_INSTANCE)
|
47
|
+
#define is_attrset_id(id) (id_type(id)==ID_ATTRSET)
|
48
|
+
#define is_const_id(id) (id_type(id)==ID_CONST)
|
49
|
+
#define is_class_id(id) (id_type(id)==ID_CLASS)
|
50
|
+
#define is_junk_id(id) (id_type(id)==ID_JUNK)
|
51
|
+
|
52
|
+
static inline int
|
53
|
+
sym_type(VALUE sym)
|
54
|
+
{
|
55
|
+
ID id;
|
56
|
+
if (STATIC_SYM_P(sym)) {
|
57
|
+
id = RSHIFT(sym, RUBY_SPECIAL_SHIFT);
|
58
|
+
if (id<=tLAST_OP_ID) {
|
59
|
+
return -1;
|
60
|
+
}
|
61
|
+
}
|
62
|
+
else {
|
63
|
+
id = RSYMBOL(sym)->id;
|
64
|
+
}
|
65
|
+
return (int)(id&ID_SCOPE_MASK);
|
66
|
+
}
|
67
|
+
|
68
|
+
#define is_local_sym(sym) (sym_type(sym)==SYM_LOCAL)
|
69
|
+
#define is_global_sym(sym) (sym_type(sym)==SYM_GLOBAL)
|
70
|
+
#define is_instance_sym(sym) (sym_type(sym)==SYM_INSTANCE)
|
71
|
+
#define is_attrset_sym(sym) (sym_type(sym)==SYM_ATTRSET)
|
72
|
+
#define is_const_sym(sym) (sym_type(sym)==SYM_CONST)
|
73
|
+
#define is_class_sym(sym) (sym_type(sym)==SYM_CLASS)
|
74
|
+
#define is_junk_sym(sym) (sym_type(sym)==SYM_JUNK)
|
75
|
+
|
76
|
+
RUBY_FUNC_EXPORTED const unsigned int ruby_global_name_punct_bits[(0x7e - 0x20 + 31) / 32];
|
77
|
+
|
78
|
+
static inline int
|
79
|
+
is_global_name_punct(const int c)
|
80
|
+
{
|
81
|
+
if (c <= 0x20 || 0x7e < c) return 0;
|
82
|
+
return (ruby_global_name_punct_bits[(c - 0x20) / 32] >> (c % 32)) & 1;
|
83
|
+
}
|
84
|
+
|
85
|
+
ID rb_intern_cstr_without_pindown(const char *, long, rb_encoding *);
|
86
|
+
|
87
|
+
#endif
|