kanayago 0.7.0 → 0.8.0

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.
Files changed (70) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +7 -0
  3. data/.rubocop_todo.yml +34 -4
  4. data/CHANGELOG.md +6 -0
  5. data/README.md +1 -0
  6. data/ext/kanayago/encindex.h +70 -0
  7. data/ext/kanayago/kanayago.c +24 -21
  8. data/ext/kanayago/literal_node.c +21 -21
  9. data/ext/kanayago/literal_node.h +1 -1
  10. data/ext/kanayago/parse.c.orig +27403 -0
  11. data/ext/kanayago/pattern_node.c +5 -5
  12. data/ext/kanayago/pattern_node.h +1 -1
  13. data/ext/kanayago/scope_node.c +2 -2
  14. data/ext/kanayago/scope_node.h +1 -1
  15. data/ext/kanayago/statement_node.c +57 -57
  16. data/ext/kanayago/statement_node.h +1 -1
  17. data/ext/kanayago/string_node.c +11 -11
  18. data/ext/kanayago/string_node.h +1 -1
  19. data/ext/kanayago/variable_node.c +6 -6
  20. data/ext/kanayago/variable_node.h +1 -1
  21. data/lib/kanayago/base_node.rb +28 -0
  22. data/lib/kanayago/call_node.rb +4 -4
  23. data/lib/kanayago/constant_node.rb +3 -3
  24. data/lib/kanayago/literal_node.rb +23 -23
  25. data/lib/kanayago/lsp/server.rb +1 -1
  26. data/lib/kanayago/pattern_node.rb +4 -4
  27. data/lib/kanayago/scope_node.rb +2 -2
  28. data/lib/kanayago/statement_node.rb +55 -55
  29. data/lib/kanayago/string_node.rb +10 -10
  30. data/lib/kanayago/variable_node.rb +6 -6
  31. data/lib/kanayago/version.rb +1 -1
  32. data/lib/kanayago.rb +1 -0
  33. data/patch/3.4/copy_target.rb +1 -0
  34. data/patch/3.4/kanayago.patch +18 -0
  35. data/patch/3.4.0/copy_target.rb +1 -0
  36. data/patch/3.4.0/kanayago.patch +18 -0
  37. data/patch/3.4.1/copy_target.rb +1 -0
  38. data/patch/3.4.1/kanayago.patch +18 -0
  39. data/patch/3.4.2/copy_target.rb +1 -0
  40. data/patch/3.4.2/kanayago.patch +18 -0
  41. data/patch/3.4.3/copy_target.rb +1 -0
  42. data/patch/3.4.3/kanayago.patch +18 -0
  43. data/patch/3.4.4/copy_target.rb +1 -0
  44. data/patch/3.4.4/kanayago.patch +18 -0
  45. data/patch/3.4.5/copy_target.rb +1 -0
  46. data/patch/3.4.5/kanayago.patch +18 -0
  47. data/patch/3.4.6/copy_target.rb +1 -0
  48. data/patch/3.4.6/kanayago.patch +18 -0
  49. data/patch/3.4.7/copy_target.rb +1 -0
  50. data/patch/3.4.7/kanayago.patch +18 -0
  51. data/patch/3.4.8/copy_target.rb +1 -0
  52. data/patch/3.4.8/kanayago.patch +18 -0
  53. data/patch/4.0.0/copy_target.rb +1 -0
  54. data/patch/4.0.0/kanayago.patch +18 -0
  55. data/patch/4.0.1/copy_target.rb +86 -0
  56. data/patch/4.0.1/kanayago.patch +300 -0
  57. data/patch/4.0.1/macos.patch +46 -0
  58. data/patch/head/copy_target.rb +3 -0
  59. data/patch/head/kanayago.patch +18 -0
  60. data/sample/kanayago_lint.yml +10 -0
  61. data/sample/lint_input.rb +8 -0
  62. data/sample/linter.rb +149 -0
  63. data/sample/minitest_generator.rb +2 -4
  64. data/sample/rules/no_p_call_rule.rb +20 -0
  65. data/sample/rules/no_puts_rule.rb +20 -0
  66. data/sample/rules/traversal.rb +30 -0
  67. data/sample/test_generator.rb +2 -4
  68. data/script/setup_parser.rb +61 -9
  69. metadata +13 -2
  70. data/patch/head/macos.patch.rej +0 -49
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a8deb4e7508cf59d82a37d9c94bb429b37aaaab9c466b534fc049a69a45ed820
4
- data.tar.gz: f60b93282c1a18e8c647d60da81eac465ee7f2a1c0059d06a5978c0281ff141e
3
+ metadata.gz: 5283a3ef35351dafb71c6c2a394662a475b7bba10243cac2314550e74ac8165f
4
+ data.tar.gz: 36f2786f6b3c0d401ac8ee394ec6efaf455dba5271892115a6203708341bef40
5
5
  SHA512:
6
- metadata.gz: 70ae466e835ed7cabd422aebcdad09afc4d16238a4f26ca415f24780e8e31dfbc1e3c00cec50f25ae68da432b9604a933d75d0508d8b6dd472f6b4403b04d630
7
- data.tar.gz: a271a9cc5175ea5774db57c634fab8b8c8587041a8c3faf2b76d7cd0221c76c2a2b3fea74ab275c1992f5e84de3c02269a717afe952f4f8ae296f00f71eed82a
6
+ metadata.gz: 1d0fd20fed3fce2e4e585a770f7682eeebc5af08882e523d7e5a958cf0ca231470096836630fb7e7961e8127f7c03f5190370b2a554dda1a26acd2cf34c8f943
7
+ data.tar.gz: 0f1f7106913a17aeaa9bb91b60975470273407ed62744aa86ac90344815d8ff376fc5cb0d689f8fc6f76f668a6def2862721e89b17eea0fe6e3bc8ac68ea0f52
data/.rubocop.yml CHANGED
@@ -20,6 +20,13 @@ RBS:
20
20
  Style/Documentation:
21
21
  Enabled: false
22
22
 
23
+ Minitest/UselessAssertion:
24
+ Exclude:
25
+ - test/kanayago/global_assignment_node_test.rb
26
+ - test/kanayago/parse_args_cat_test.rb
27
+ - test/kanayago/parse_args_push_test.rb
28
+ - test/kanayago/parse_attrasgn_test.rb
29
+
23
30
  plugins:
24
31
  - rubocop-minitest
25
32
  - rubocop-on-rbs
data/.rubocop_todo.yml CHANGED
@@ -1,6 +1,6 @@
1
1
  # This configuration was generated by
2
2
  # `rubocop --auto-gen-config`
3
- # on 2025-12-18 13:44:08 UTC using RuboCop version 1.81.7.
3
+ # on 2026-02-23 12:14:17 UTC using RuboCop version 1.84.2.
4
4
  # The point is for the user to remove these configuration records
5
5
  # one by one as the offenses are removed from the code base.
6
6
  # Note that changes in the inspected code, or installation of new
@@ -12,12 +12,32 @@ Lint/Debugger:
12
12
  Exclude:
13
13
  - 'test.rb'
14
14
 
15
- # Offense count: 8
15
+ # Offense count: 1
16
+ # This cop supports safe autocorrection (--autocorrect).
17
+ Lint/RedundantStringCoercion:
18
+ Exclude:
19
+ - 'sample/linter.rb'
20
+
21
+ # Offense count: 4
22
+ # This cop supports safe autocorrection (--autocorrect).
23
+ # Configuration parameters: AllowUnusedKeywordArguments, IgnoreEmptyMethods, IgnoreNotImplementedMethods, NotImplementedExceptions.
24
+ # NotImplementedExceptions: NotImplementedError
25
+ Lint/UnusedMethodArgument:
26
+ Exclude:
27
+ - 'sample/rules/no_p_call_rule.rb'
28
+ - 'sample/rules/no_puts_rule.rb'
29
+
30
+ # Offense count: 11
16
31
  # Configuration parameters: CountComments, CountAsOne.
17
32
  Metrics/ClassLength:
18
33
  Max: 179
19
34
 
20
- # Offense count: 80
35
+ # Offense count: 5
36
+ # Configuration parameters: AllowedMethods, AllowedPatterns.
37
+ Metrics/CyclomaticComplexity:
38
+ Max: 10
39
+
40
+ # Offense count: 88
21
41
  # Configuration parameters: CountComments, CountAsOne, AllowedMethods, AllowedPatterns.
22
42
  Metrics/MethodLength:
23
43
  Max: 42
@@ -25,7 +45,17 @@ Metrics/MethodLength:
25
45
  # Offense count: 1
26
46
  # Configuration parameters: CountComments, CountAsOne.
27
47
  Metrics/ModuleLength:
28
- Max: 105
48
+ Max: 142
49
+
50
+ # Offense count: 2
51
+ # Configuration parameters: AllowedMethods, AllowedPatterns.
52
+ Metrics/PerceivedComplexity:
53
+ Max: 10
54
+
55
+ # Offense count: 1
56
+ Security/Open:
57
+ Exclude:
58
+ - 'script/setup_parser.rb'
29
59
 
30
60
  # Offense count: 4
31
61
  # Configuration parameters: AllowedVariables.
data/CHANGELOG.md CHANGED
@@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.8.0] - 2026-02-23
11
+
12
+ ### Added
13
+ - Add support for pattern matching
14
+ - Add Windows CI workflow (`.github/workflows/windows.yml`)
15
+
10
16
  ## [0.7.0] - 2026-01-01
11
17
 
12
18
  ### Fixed
data/README.md CHANGED
@@ -5,6 +5,7 @@ Trying to Make Ruby's Parser Available as a Gem.
5
5
  ## Support Ruby version
6
6
 
7
7
  Kanayago(金屋子) is supported Ruby 3.4 or Ruby head.
8
+ CI runs on Ubuntu, macOS, and Windows.
8
9
 
9
10
  ## Installation
10
11
  ### From RubyGems
@@ -0,0 +1,70 @@
1
+ #ifndef RUBY_ENCINDEX_H
2
+ #define RUBY_ENCINDEX_H 1
3
+ /**********************************************************************
4
+
5
+ encindex.h -
6
+
7
+ $Author$
8
+ created at: Tue Sep 15 13:21:14 JST 2015
9
+
10
+ Copyright (C) 2015 Yukihiro Matsumoto
11
+
12
+ **********************************************************************/
13
+
14
+ #include "ruby/encoding.h" /* rb_ascii8bit_encindex etc. */
15
+ #if defined(__cplusplus)
16
+ extern "C" {
17
+ #if 0
18
+ } /* satisfy cc-mode */
19
+ #endif
20
+ #endif
21
+
22
+ enum ruby_preserved_encindex {
23
+ RUBY_ENCINDEX_ASCII_8BIT,
24
+ RUBY_ENCINDEX_UTF_8,
25
+ RUBY_ENCINDEX_US_ASCII,
26
+
27
+ /* preserved indexes */
28
+ RUBY_ENCINDEX_UTF_16BE,
29
+ RUBY_ENCINDEX_UTF_16LE,
30
+ RUBY_ENCINDEX_UTF_32BE,
31
+ RUBY_ENCINDEX_UTF_32LE,
32
+ RUBY_ENCINDEX_UTF_16,
33
+ RUBY_ENCINDEX_UTF_32,
34
+ RUBY_ENCINDEX_UTF8_MAC,
35
+
36
+ /* for old options of regexp */
37
+ RUBY_ENCINDEX_EUC_JP,
38
+ RUBY_ENCINDEX_Windows_31J,
39
+
40
+ RUBY_ENCINDEX_BUILTIN_MAX
41
+ };
42
+
43
+ #define ENCINDEX_ASCII_8BIT RUBY_ENCINDEX_ASCII_8BIT
44
+ #define ENCINDEX_UTF_8 RUBY_ENCINDEX_UTF_8
45
+ #define ENCINDEX_US_ASCII RUBY_ENCINDEX_US_ASCII
46
+ #define ENCINDEX_UTF_16BE RUBY_ENCINDEX_UTF_16BE
47
+ #define ENCINDEX_UTF_16LE RUBY_ENCINDEX_UTF_16LE
48
+ #define ENCINDEX_UTF_32BE RUBY_ENCINDEX_UTF_32BE
49
+ #define ENCINDEX_UTF_32LE RUBY_ENCINDEX_UTF_32LE
50
+ #define ENCINDEX_UTF_16 RUBY_ENCINDEX_UTF_16
51
+ #define ENCINDEX_UTF_32 RUBY_ENCINDEX_UTF_32
52
+ #define ENCINDEX_UTF8_MAC RUBY_ENCINDEX_UTF8_MAC
53
+ #define ENCINDEX_EUC_JP RUBY_ENCINDEX_EUC_JP
54
+ #define ENCINDEX_Windows_31J RUBY_ENCINDEX_Windows_31J
55
+ #define ENCINDEX_BUILTIN_MAX RUBY_ENCINDEX_BUILTIN_MAX
56
+
57
+ #define rb_ascii8bit_encindex() RUBY_ENCINDEX_ASCII_8BIT
58
+ #define rb_utf8_encindex() RUBY_ENCINDEX_UTF_8
59
+ #define rb_usascii_encindex() RUBY_ENCINDEX_US_ASCII
60
+
61
+ int rb_enc_find_index2(const char *name, long len);
62
+
63
+ #if defined(__cplusplus)
64
+ #if 0
65
+ { /* satisfy cc-mode */
66
+ #endif
67
+ } /* extern "C" { */
68
+ #endif
69
+
70
+ #endif /* RUBY_ENCINDEX_H */
@@ -633,6 +633,7 @@ static const rb_parser_config_t kanayago_parser_config = {
633
633
 
634
634
  VALUE rb_mKanayago;
635
635
 
636
+ VALUE rb_cBaseNode;
636
637
  VALUE rb_cConstantNode;
637
638
  VALUE rb_cConstantDeclarationNode;
638
639
  VALUE rb_cDefinitionNode;
@@ -1176,54 +1177,56 @@ Init_kanayago(void)
1176
1177
  {
1177
1178
  rb_mKanayago = rb_define_module("Kanayago");
1178
1179
  rb_define_module_function(rb_mKanayago, "kanayago_parse", kanayago_parse, 1);
1180
+
1181
+ rb_cBaseNode = rb_define_class_under(rb_mKanayago, "BaseNode", rb_cObject);
1179
1182
 
1180
1183
  // For Kanayago::ScopeNode
1181
- Init_ScopeNode(rb_mKanayago);
1184
+ Init_ScopeNode(rb_mKanayago, rb_cBaseNode);
1182
1185
 
1183
1186
  // For Literal Node(e.g. Kanayago::IntegerNode)
1184
- Init_LiteralNode(rb_mKanayago);
1187
+ Init_LiteralNode(rb_mKanayago, rb_cBaseNode);
1185
1188
 
1186
1189
  // For String Node(e.g. Kanayago::DynamicStringNode)
1187
- Init_StringNode(rb_mKanayago);
1190
+ Init_StringNode(rb_mKanayago, rb_cBaseNode);
1188
1191
 
1189
- rb_cConstantNode = rb_define_class_under(rb_mKanayago, "ConstantNode", rb_cObject);
1192
+ rb_cConstantNode = rb_define_class_under(rb_mKanayago, "ConstantNode", rb_cBaseNode);
1190
1193
 
1191
- rb_cConstantDeclarationNode = rb_define_class_under(rb_mKanayago, "ConstantDeclarationNode", rb_cObject);
1194
+ rb_cConstantDeclarationNode = rb_define_class_under(rb_mKanayago, "ConstantDeclarationNode", rb_cBaseNode);
1192
1195
 
1193
- rb_cDefinitionNode = rb_define_class_under(rb_mKanayago, "DefinitionNode", rb_cObject);
1196
+ rb_cDefinitionNode = rb_define_class_under(rb_mKanayago, "DefinitionNode", rb_cBaseNode);
1194
1197
 
1195
- rb_cOperatorCallNode = rb_define_class_under(rb_mKanayago, "OperatorCallNode", rb_cObject);
1198
+ rb_cOperatorCallNode = rb_define_class_under(rb_mKanayago, "OperatorCallNode", rb_cBaseNode);
1196
1199
 
1197
- rb_cListNode = rb_define_class_under(rb_mKanayago, "ListNode", rb_cObject);
1200
+ rb_cListNode = rb_define_class_under(rb_mKanayago, "ListNode", rb_cBaseNode);
1198
1201
 
1199
- rb_cArgumentsNode = rb_define_class_under(rb_mKanayago, "ArgumentsNode", rb_cObject);
1202
+ rb_cArgumentsNode = rb_define_class_under(rb_mKanayago, "ArgumentsNode", rb_cBaseNode);
1200
1203
 
1201
- rb_cCallNode = rb_define_class_under(rb_mKanayago, "CallNode", rb_cObject);
1204
+ rb_cCallNode = rb_define_class_under(rb_mKanayago, "CallNode", rb_cBaseNode);
1202
1205
 
1203
- rb_cFunctionCallNode = rb_define_class_under(rb_mKanayago, "FunctionCallNode", rb_cObject);
1206
+ rb_cFunctionCallNode = rb_define_class_under(rb_mKanayago, "FunctionCallNode", rb_cBaseNode);
1204
1207
 
1205
- rb_cVariableCallNode = rb_define_class_under(rb_mKanayago, "VariableCallNode", rb_cObject);
1208
+ rb_cVariableCallNode = rb_define_class_under(rb_mKanayago, "VariableCallNode", rb_cBaseNode);
1206
1209
 
1207
1210
  // For Statement Node(e.g. Kanayago::IfStatementNode)
1208
- Init_StatementNode(rb_mKanayago);
1211
+ Init_StatementNode(rb_mKanayago, rb_cBaseNode);
1209
1212
 
1210
1213
  rb_cBlockNode = rb_define_class_under(rb_mKanayago, "BlockNode", rb_cArray);
1211
1214
 
1212
- rb_cBeginNode = rb_define_class_under(rb_mKanayago, "BeginNode", rb_cObject);
1215
+ rb_cBeginNode = rb_define_class_under(rb_mKanayago, "BeginNode", rb_cBaseNode);
1213
1216
 
1214
- rb_cClassNode = rb_define_class_under(rb_mKanayago, "ClassNode", rb_cObject);
1217
+ rb_cClassNode = rb_define_class_under(rb_mKanayago, "ClassNode", rb_cBaseNode);
1215
1218
 
1216
- rb_cModuleNode = rb_define_class_under(rb_mKanayago, "ModuleNode", rb_cObject);
1219
+ rb_cModuleNode = rb_define_class_under(rb_mKanayago, "ModuleNode", rb_cBaseNode);
1217
1220
 
1218
- rb_cColon2Node = rb_define_class_under(rb_mKanayago, "Colon2Node", rb_cObject);
1221
+ rb_cColon2Node = rb_define_class_under(rb_mKanayago, "Colon2Node", rb_cBaseNode);
1219
1222
 
1220
- rb_cColon3Node = rb_define_class_under(rb_mKanayago, "Colon3Node", rb_cObject);
1223
+ rb_cColon3Node = rb_define_class_under(rb_mKanayago, "Colon3Node", rb_cBaseNode);
1221
1224
 
1222
1225
  // For Variable Node(e.g. Kanayago::LocalVariableNode)
1223
- Init_VariableNode(rb_mKanayago);
1226
+ Init_VariableNode(rb_mKanayago, rb_cBaseNode);
1224
1227
 
1225
1228
  // For Pattern Node(e.g. Kanayago::InNode)
1226
- Init_PatternNode(rb_mKanayago);
1229
+ Init_PatternNode(rb_mKanayago, rb_cBaseNode);
1227
1230
 
1228
- rb_cSelfNode = rb_define_class_under(rb_mKanayago, "SelfNode", rb_cObject);
1231
+ rb_cSelfNode = rb_define_class_under(rb_mKanayago, "SelfNode", rb_cBaseNode);
1229
1232
  }
@@ -299,45 +299,45 @@ back_ref_node_new(const NODE *node)
299
299
  }
300
300
 
301
301
  void
302
- Init_LiteralNode(VALUE module)
302
+ Init_LiteralNode(VALUE module, VALUE base)
303
303
  {
304
- rb_cIntegerNode = rb_define_class_under(module, "IntegerNode", rb_cObject);
304
+ rb_cIntegerNode = rb_define_class_under(module, "IntegerNode", base);
305
305
 
306
- rb_cFloatNode = rb_define_class_under(module, "FloatNode", rb_cObject);
306
+ rb_cFloatNode = rb_define_class_under(module, "FloatNode", base);
307
307
 
308
- rb_cRationalNode = rb_define_class_under(module, "RationalNode", rb_cObject);
308
+ rb_cRationalNode = rb_define_class_under(module, "RationalNode", base);
309
309
 
310
- rb_cImaginaryNode = rb_define_class_under(module, "ImaginaryNode", rb_cObject);
310
+ rb_cImaginaryNode = rb_define_class_under(module, "ImaginaryNode", base);
311
311
 
312
- rb_cStringNode = rb_define_class_under(module, "StringNode", rb_cObject);
312
+ rb_cStringNode = rb_define_class_under(module, "StringNode", base);
313
313
 
314
- rb_cSymbolNode = rb_define_class_under(module, "SymbolNode", rb_cObject);
314
+ rb_cSymbolNode = rb_define_class_under(module, "SymbolNode", base);
315
315
 
316
- rb_cZeroListNode = rb_define_class_under(module, "ZeroListNode", rb_cObject);
316
+ rb_cZeroListNode = rb_define_class_under(module, "ZeroListNode", base);
317
317
 
318
- rb_cFileNode = rb_define_class_under(module, "FileNode", rb_cObject);
318
+ rb_cFileNode = rb_define_class_under(module, "FileNode", base);
319
319
 
320
- rb_cLineNode = rb_define_class_under(module, "LineNode", rb_cObject);
320
+ rb_cLineNode = rb_define_class_under(module, "LineNode", base);
321
321
 
322
- rb_cEncodingNode = rb_define_class_under(module, "EncodingNode", rb_cObject);
322
+ rb_cEncodingNode = rb_define_class_under(module, "EncodingNode", base);
323
323
 
324
- rb_cNilNode = rb_define_class_under(module, "NilNode", rb_cObject);
324
+ rb_cNilNode = rb_define_class_under(module, "NilNode", base);
325
325
 
326
- rb_cTrueNode = rb_define_class_under(module, "TrueNode", rb_cObject);
326
+ rb_cTrueNode = rb_define_class_under(module, "TrueNode", base);
327
327
 
328
- rb_cFalseNode = rb_define_class_under(module, "FalseNode", rb_cObject);
328
+ rb_cFalseNode = rb_define_class_under(module, "FalseNode", base);
329
329
 
330
- rb_cRangeNode = rb_define_class_under(module, "RangeNode", rb_cObject);
330
+ rb_cRangeNode = rb_define_class_under(module, "RangeNode", base);
331
331
 
332
- rb_cExclusiveRangeNode = rb_define_class_under(module, "ExclusiveRangeNode", rb_cObject);
332
+ rb_cExclusiveRangeNode = rb_define_class_under(module, "ExclusiveRangeNode", base);
333
333
 
334
- rb_cFlipFlopNode = rb_define_class_under(module, "FlipFlopNode", rb_cObject);
334
+ rb_cFlipFlopNode = rb_define_class_under(module, "FlipFlopNode", base);
335
335
 
336
- rb_cExclusiveFlipFlopNode = rb_define_class_under(module, "ExclusiveFlipFlopNode", rb_cObject);
336
+ rb_cExclusiveFlipFlopNode = rb_define_class_under(module, "ExclusiveFlipFlopNode", base);
337
337
 
338
- rb_cHashNode = rb_define_class_under(module, "HashNode", rb_cObject);
338
+ rb_cHashNode = rb_define_class_under(module, "HashNode", base);
339
339
 
340
- rb_cNthRefNode = rb_define_class_under(module, "NthRefNode", rb_cObject);
340
+ rb_cNthRefNode = rb_define_class_under(module, "NthRefNode", base);
341
341
 
342
- rb_cBackRefNode = rb_define_class_under(module, "BackRefNode", rb_cObject);
342
+ rb_cBackRefNode = rb_define_class_under(module, "BackRefNode", base);
343
343
  }
@@ -25,6 +25,6 @@ VALUE hash_node_new(const NODE *);
25
25
  VALUE nth_ref_node_new(const NODE *);
26
26
  VALUE back_ref_node_new(const NODE *);
27
27
 
28
- void Init_LiteralNode(VALUE);
28
+ void Init_LiteralNode(VALUE, VALUE);
29
29
 
30
30
  #endif