parser 2.4.0.2 → 2.5.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (101) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +5 -6
  3. data/CHANGELOG.md +35 -1
  4. data/Gemfile +2 -0
  5. data/README.md +1 -2
  6. data/Rakefile +2 -1
  7. data/bin/ruby-parse +2 -1
  8. data/bin/ruby-rewrite +2 -1
  9. data/lib/gauntlet_parser.rb +2 -0
  10. data/lib/parser.rb +16 -17
  11. data/lib/parser/all.rb +2 -0
  12. data/lib/parser/ast/node.rb +2 -0
  13. data/lib/parser/ast/processor.rb +2 -0
  14. data/lib/parser/base.rb +6 -12
  15. data/lib/parser/builders/default.rb +28 -47
  16. data/lib/parser/clobbering_error.rb +2 -0
  17. data/lib/parser/context.rb +42 -0
  18. data/lib/parser/current.rb +4 -20
  19. data/lib/parser/deprecation.rb +13 -0
  20. data/lib/parser/diagnostic.rb +3 -3
  21. data/lib/parser/diagnostic/engine.rb +2 -0
  22. data/lib/parser/lexer.rl +122 -60
  23. data/lib/parser/lexer/dedenter.rb +2 -0
  24. data/lib/parser/lexer/explanation.rb +2 -0
  25. data/lib/parser/lexer/literal.rb +4 -9
  26. data/lib/parser/lexer/stack_state.rb +4 -1
  27. data/lib/parser/macruby.y +32 -17
  28. data/lib/parser/messages.rb +14 -0
  29. data/lib/parser/meta.rb +2 -0
  30. data/lib/parser/rewriter.rb +30 -44
  31. data/lib/parser/ruby18.y +20 -13
  32. data/lib/parser/ruby19.y +32 -17
  33. data/lib/parser/ruby20.y +33 -18
  34. data/lib/parser/ruby21.y +32 -17
  35. data/lib/parser/ruby22.y +32 -17
  36. data/lib/parser/ruby23.y +32 -17
  37. data/lib/parser/ruby24.y +63 -46
  38. data/lib/parser/ruby25.y +72 -48
  39. data/lib/parser/rubymotion.y +33 -18
  40. data/lib/parser/runner.rb +4 -7
  41. data/lib/parser/runner/ruby_parse.rb +10 -0
  42. data/lib/parser/runner/ruby_rewrite.rb +2 -0
  43. data/lib/parser/source/buffer.rb +19 -24
  44. data/lib/parser/source/comment.rb +2 -0
  45. data/lib/parser/source/comment/associator.rb +2 -0
  46. data/lib/parser/source/map.rb +2 -0
  47. data/lib/parser/source/map/collection.rb +2 -0
  48. data/lib/parser/source/map/condition.rb +2 -0
  49. data/lib/parser/source/map/constant.rb +2 -0
  50. data/lib/parser/source/map/definition.rb +2 -0
  51. data/lib/parser/source/map/for.rb +2 -0
  52. data/lib/parser/source/map/heredoc.rb +2 -0
  53. data/lib/parser/source/map/keyword.rb +2 -0
  54. data/lib/parser/source/map/objc_kwarg.rb +2 -0
  55. data/lib/parser/source/map/operator.rb +2 -0
  56. data/lib/parser/source/map/rescue_body.rb +2 -0
  57. data/lib/parser/source/map/send.rb +2 -0
  58. data/lib/parser/source/map/ternary.rb +2 -0
  59. data/lib/parser/source/map/variable.rb +2 -0
  60. data/lib/parser/source/range.rb +81 -13
  61. data/lib/parser/source/rewriter.rb +48 -10
  62. data/lib/parser/source/rewriter/action.rb +2 -0
  63. data/lib/parser/source/tree_rewriter.rb +301 -0
  64. data/lib/parser/source/tree_rewriter/action.rb +133 -0
  65. data/lib/parser/static_environment.rb +2 -0
  66. data/lib/parser/syntax_error.rb +2 -0
  67. data/lib/parser/tree_rewriter.rb +133 -0
  68. data/lib/parser/version.rb +3 -1
  69. data/parser.gemspec +4 -1
  70. data/test/bug_163/fixtures/input.rb +2 -0
  71. data/test/bug_163/fixtures/output.rb +2 -0
  72. data/test/bug_163/rewriter.rb +2 -0
  73. data/test/helper.rb +7 -7
  74. data/test/parse_helper.rb +57 -10
  75. data/test/racc_coverage_helper.rb +2 -0
  76. data/test/test_base.rb +2 -0
  77. data/test/test_current.rb +2 -4
  78. data/test/test_diagnostic.rb +3 -1
  79. data/test/test_diagnostic_engine.rb +2 -0
  80. data/test/test_encoding.rb +61 -49
  81. data/test/test_lexer.rb +164 -77
  82. data/test/test_lexer_stack_state.rb +2 -0
  83. data/test/test_parse_helper.rb +8 -8
  84. data/test/test_parser.rb +613 -51
  85. data/test/test_runner_rewrite.rb +47 -0
  86. data/test/test_source_buffer.rb +22 -10
  87. data/test/test_source_comment.rb +2 -0
  88. data/test/test_source_comment_associator.rb +2 -0
  89. data/test/test_source_map.rb +2 -0
  90. data/test/test_source_range.rb +92 -45
  91. data/test/test_source_rewriter.rb +3 -1
  92. data/test/test_source_rewriter_action.rb +2 -0
  93. data/test/test_source_tree_rewriter.rb +177 -0
  94. data/test/test_static_environment.rb +2 -0
  95. data/test/using_tree_rewriter/fixtures/input.rb +3 -0
  96. data/test/using_tree_rewriter/fixtures/output.rb +3 -0
  97. data/test/using_tree_rewriter/using_tree_rewriter.rb +9 -0
  98. metadata +21 -10
  99. data/lib/parser/compatibility/ruby1_8.rb +0 -20
  100. data/lib/parser/compatibility/ruby1_9.rb +0 -32
  101. data/test/bug_163/test_runner_rewrite.rb +0 -35
@@ -280,12 +280,14 @@ rule
280
280
  cmd_brace_block: tLBRACE_ARG
281
281
  {
282
282
  @static_env.extend_dynamic
283
+ @context.push(:block)
283
284
  }
284
285
  opt_block_param compstmt tRCURLY
285
286
  {
286
287
  result = [ val[0], val[2], val[3], val[4] ]
287
288
 
288
289
  @static_env.unextend
290
+ @context.pop
289
291
  }
290
292
 
291
293
  command: operation command_args =tLOWEST
@@ -1089,10 +1091,11 @@ rule
1089
1091
  {
1090
1092
  @static_env.extend_static
1091
1093
  @lexer.push_cmdarg
1094
+ @context.push(:class)
1092
1095
  }
1093
1096
  bodystmt kEND
1094
1097
  {
1095
- if in_def?
1098
+ if @context.indirectly_in_def?
1096
1099
  diagnostic :error, :class_in_def, nil, val[0]
1097
1100
  end
1098
1101
 
@@ -1103,14 +1106,13 @@ rule
1103
1106
 
1104
1107
  @lexer.pop_cmdarg
1105
1108
  @static_env.unextend
1109
+ @context.pop
1106
1110
  }
1107
1111
  | kCLASS tLSHFT expr term
1108
1112
  {
1109
- result = @def_level
1110
- @def_level = 0
1111
-
1112
1113
  @static_env.extend_static
1113
1114
  @lexer.push_cmdarg
1115
+ @context.push(:sclass)
1114
1116
  }
1115
1117
  bodystmt kEND
1116
1118
  {
@@ -1119,8 +1121,7 @@ rule
1119
1121
 
1120
1122
  @lexer.pop_cmdarg
1121
1123
  @static_env.unextend
1122
-
1123
- @def_level = val[4]
1124
+ @context.pop
1124
1125
  }
1125
1126
  | kMODULE cpath
1126
1127
  {
@@ -1129,7 +1130,7 @@ rule
1129
1130
  }
1130
1131
  bodystmt kEND
1131
1132
  {
1132
- if in_def?
1133
+ if @context.indirectly_in_def?
1133
1134
  diagnostic :error, :module_in_def, nil, val[0]
1134
1135
  end
1135
1136
 
@@ -1141,9 +1142,9 @@ rule
1141
1142
  }
1142
1143
  | kDEF fname
1143
1144
  {
1144
- @def_level += 1
1145
1145
  @static_env.extend_static
1146
1146
  @lexer.push_cmdarg
1147
+ @context.push(:def)
1147
1148
  }
1148
1149
  f_arglist bodystmt kEND
1149
1150
  {
@@ -1152,7 +1153,7 @@ rule
1152
1153
 
1153
1154
  @lexer.pop_cmdarg
1154
1155
  @static_env.unextend
1155
- @def_level -= 1
1156
+ @context.pop
1156
1157
  }
1157
1158
  | kDEF singleton dot_or_colon
1158
1159
  {
@@ -1160,9 +1161,9 @@ rule
1160
1161
  }
1161
1162
  fname
1162
1163
  {
1163
- @def_level += 1
1164
1164
  @static_env.extend_static
1165
1165
  @lexer.push_cmdarg
1166
+ @context.push(:defs)
1166
1167
  }
1167
1168
  f_arglist bodystmt kEND
1168
1169
  {
@@ -1171,7 +1172,7 @@ rule
1171
1172
 
1172
1173
  @lexer.pop_cmdarg
1173
1174
  @static_env.unextend
1174
- @def_level -= 1
1175
+ @context.pop
1175
1176
  }
1176
1177
  | kBREAK
1177
1178
  {
@@ -1448,24 +1449,36 @@ rule
1448
1449
  result = @builder.args(nil, val[0], nil)
1449
1450
  }
1450
1451
 
1451
- lambda_body: tLAMBEG compstmt tRCURLY
1452
+ lambda_body: tLAMBEG
1453
+ {
1454
+ @context.push(:lambda)
1455
+ }
1456
+ compstmt tRCURLY
1452
1457
  {
1453
- result = [ val[0], val[1], val[2] ]
1458
+ result = [ val[0], val[2], val[3] ]
1459
+ @context.pop
1454
1460
  }
1455
- | kDO_LAMBDA compstmt kEND
1461
+ | kDO_LAMBDA
1456
1462
  {
1457
- result = [ val[0], val[1], val[2] ]
1463
+ @context.push(:lambda)
1464
+ }
1465
+ compstmt kEND
1466
+ {
1467
+ result = [ val[0], val[2], val[3] ]
1468
+ @context.pop
1458
1469
  }
1459
1470
 
1460
1471
  do_block: kDO_BLOCK
1461
1472
  {
1462
1473
  @static_env.extend_dynamic
1474
+ @context.push(:block)
1463
1475
  }
1464
1476
  opt_block_param compstmt kEND
1465
1477
  {
1466
1478
  result = [ val[0], val[2], val[3], val[4] ]
1467
1479
 
1468
1480
  @static_env.unextend
1481
+ @context.pop
1469
1482
  }
1470
1483
 
1471
1484
  block_call: command do_block
@@ -1539,22 +1552,26 @@ rule
1539
1552
  brace_block: tLCURLY
1540
1553
  {
1541
1554
  @static_env.extend_dynamic
1555
+ @context.push(:block)
1542
1556
  }
1543
1557
  opt_block_param compstmt tRCURLY
1544
1558
  {
1545
1559
  result = [ val[0], val[2], val[3], val[4] ]
1546
1560
 
1547
1561
  @static_env.unextend
1562
+ @context.pop
1548
1563
  }
1549
1564
  | kDO
1550
1565
  {
1551
1566
  @static_env.extend_dynamic
1567
+ @context.push(:block)
1552
1568
  }
1553
1569
  opt_block_param compstmt kEND
1554
1570
  {
1555
1571
  result = [ val[0], val[2], val[3], val[4] ]
1556
1572
 
1557
1573
  @static_env.unextend
1574
+ @context.pop
1558
1575
  }
1559
1576
 
1560
1577
  case_body: kWHEN args then compstmt cases
@@ -2147,8 +2164,6 @@ end
2147
2164
 
2148
2165
  require 'parser'
2149
2166
 
2150
- Parser.check_for_encoding_support
2151
-
2152
2167
  ---- inner
2153
2168
 
2154
2169
  def version
@@ -116,7 +116,7 @@ rule
116
116
  stmt_or_begin: stmt
117
117
  | klBEGIN tLCURLY top_compstmt tRCURLY
118
118
  {
119
- if in_def?
119
+ if @context.indirectly_in_def?
120
120
  diagnostic :error, :begin_in_method, nil, val[0]
121
121
  end
122
122
 
@@ -287,12 +287,14 @@ rule
287
287
  cmd_brace_block: tLBRACE_ARG
288
288
  {
289
289
  @static_env.extend_dynamic
290
+ @context.push(:block)
290
291
  }
291
292
  opt_block_param compstmt tRCURLY
292
293
  {
293
294
  result = [ val[0], val[2], val[3], val[4] ]
294
295
 
295
296
  @static_env.unextend
297
+ @context.pop
296
298
  }
297
299
 
298
300
  fcall: operation
@@ -1119,10 +1121,11 @@ rule
1119
1121
  {
1120
1122
  @static_env.extend_static
1121
1123
  @lexer.push_cmdarg
1124
+ @context.push(:class)
1122
1125
  }
1123
1126
  bodystmt kEND
1124
1127
  {
1125
- if in_def?
1128
+ if @context.indirectly_in_def?
1126
1129
  diagnostic :error, :class_in_def, nil, val[0]
1127
1130
  end
1128
1131
 
@@ -1133,14 +1136,13 @@ rule
1133
1136
 
1134
1137
  @lexer.pop_cmdarg
1135
1138
  @static_env.unextend
1139
+ @context.pop
1136
1140
  }
1137
1141
  | kCLASS tLSHFT expr term
1138
1142
  {
1139
- result = @def_level
1140
- @def_level = 0
1141
-
1142
1143
  @static_env.extend_static
1143
1144
  @lexer.push_cmdarg
1145
+ @context.push(:sclass)
1144
1146
  }
1145
1147
  bodystmt kEND
1146
1148
  {
@@ -1149,8 +1151,7 @@ rule
1149
1151
 
1150
1152
  @lexer.pop_cmdarg
1151
1153
  @static_env.unextend
1152
-
1153
- @def_level = val[4]
1154
+ @context.pop
1154
1155
  }
1155
1156
  | kMODULE cpath
1156
1157
  {
@@ -1159,7 +1160,7 @@ rule
1159
1160
  }
1160
1161
  bodystmt kEND
1161
1162
  {
1162
- if in_def?
1163
+ if @context.indirectly_in_def?
1163
1164
  diagnostic :error, :module_in_def, nil, val[0]
1164
1165
  end
1165
1166
 
@@ -1171,9 +1172,9 @@ rule
1171
1172
  }
1172
1173
  | kDEF fname
1173
1174
  {
1174
- @def_level += 1
1175
1175
  @static_env.extend_static
1176
1176
  @lexer.push_cmdarg
1177
+ @context.push(:def)
1177
1178
  }
1178
1179
  f_arglist bodystmt kEND
1179
1180
  {
@@ -1182,7 +1183,7 @@ rule
1182
1183
 
1183
1184
  @lexer.pop_cmdarg
1184
1185
  @static_env.unextend
1185
- @def_level -= 1
1186
+ @context.pop
1186
1187
  }
1187
1188
  | kDEF singleton dot_or_colon
1188
1189
  {
@@ -1190,9 +1191,9 @@ rule
1190
1191
  }
1191
1192
  fname
1192
1193
  {
1193
- @def_level += 1
1194
1194
  @static_env.extend_static
1195
1195
  @lexer.push_cmdarg
1196
+ @context.push(:defs)
1196
1197
  }
1197
1198
  f_arglist bodystmt kEND
1198
1199
  {
@@ -1201,7 +1202,7 @@ rule
1201
1202
 
1202
1203
  @lexer.pop_cmdarg
1203
1204
  @static_env.unextend
1204
- @def_level -= 1
1205
+ @context.pop
1205
1206
  }
1206
1207
  | kBREAK
1207
1208
  {
@@ -1502,24 +1503,36 @@ opt_block_args_tail:
1502
1503
  result = @builder.args(nil, val[0], nil)
1503
1504
  }
1504
1505
 
1505
- lambda_body: tLAMBEG compstmt tRCURLY
1506
+ lambda_body: tLAMBEG
1507
+ {
1508
+ @context.push(:lambda)
1509
+ }
1510
+ compstmt tRCURLY
1506
1511
  {
1507
- result = [ val[0], val[1], val[2] ]
1512
+ result = [ val[0], val[2], val[3] ]
1513
+ @context.pop
1508
1514
  }
1509
- | kDO_LAMBDA compstmt kEND
1515
+ | kDO_LAMBDA
1510
1516
  {
1511
- result = [ val[0], val[1], val[2] ]
1517
+ @context.push(:lambda)
1518
+ }
1519
+ compstmt kEND
1520
+ {
1521
+ result = [ val[0], val[2], val[3] ]
1522
+ @context.pop
1512
1523
  }
1513
1524
 
1514
1525
  do_block: kDO_BLOCK
1515
1526
  {
1516
1527
  @static_env.extend_dynamic
1528
+ @context.push(:block)
1517
1529
  }
1518
1530
  opt_block_param compstmt kEND
1519
1531
  {
1520
1532
  result = [ val[0], val[2], val[3], val[4] ]
1521
1533
 
1522
1534
  @static_env.unextend
1535
+ @context.pop
1523
1536
  }
1524
1537
 
1525
1538
  block_call: command do_block
@@ -1606,22 +1619,26 @@ opt_block_args_tail:
1606
1619
  brace_block: tLCURLY
1607
1620
  {
1608
1621
  @static_env.extend_dynamic
1622
+ @context.push(:block)
1609
1623
  }
1610
1624
  opt_block_param compstmt tRCURLY
1611
1625
  {
1612
1626
  result = [ val[0], val[2], val[3], val[4] ]
1613
1627
 
1614
1628
  @static_env.unextend
1629
+ @context.pop
1615
1630
  }
1616
1631
  | kDO
1617
1632
  {
1618
1633
  @static_env.extend_dynamic
1634
+ @context.push(:block)
1619
1635
  }
1620
1636
  opt_block_param compstmt kEND
1621
1637
  {
1622
1638
  result = [ val[0], val[2], val[3], val[4] ]
1623
1639
 
1624
1640
  @static_env.unextend
1641
+ @context.pop
1625
1642
  }
1626
1643
 
1627
1644
  case_body: kWHEN args then compstmt cases
@@ -2325,8 +2342,6 @@ end
2325
2342
 
2326
2343
  require 'parser'
2327
2344
 
2328
- Parser.check_for_encoding_support
2329
-
2330
2345
  ---- inner
2331
2346
 
2332
2347
  def version
@@ -279,12 +279,14 @@ rule
279
279
  cmd_brace_block: tLBRACE_ARG
280
280
  {
281
281
  @static_env.extend_dynamic
282
+ @context.push(:block)
282
283
  }
283
284
  opt_block_param compstmt tRCURLY
284
285
  {
285
286
  result = [ val[0], val[2], val[3], val[4] ]
286
287
 
287
288
  @static_env.unextend
289
+ @context.pop
288
290
  }
289
291
 
290
292
  fcall: operation
@@ -1109,10 +1111,11 @@ rule
1109
1111
  {
1110
1112
  @static_env.extend_static
1111
1113
  @lexer.push_cmdarg
1114
+ @context.push(:class)
1112
1115
  }
1113
1116
  bodystmt kEND
1114
1117
  {
1115
- if in_def?
1118
+ if @context.indirectly_in_def?
1116
1119
  diagnostic :error, :class_in_def, nil, val[0]
1117
1120
  end
1118
1121
 
@@ -1123,14 +1126,13 @@ rule
1123
1126
 
1124
1127
  @lexer.pop_cmdarg
1125
1128
  @static_env.unextend
1129
+ @context.pop
1126
1130
  }
1127
1131
  | kCLASS tLSHFT expr term
1128
1132
  {
1129
- result = @def_level
1130
- @def_level = 0
1131
-
1132
1133
  @static_env.extend_static
1133
1134
  @lexer.push_cmdarg
1135
+ @context.push(:sclass)
1134
1136
  }
1135
1137
  bodystmt kEND
1136
1138
  {
@@ -1139,8 +1141,7 @@ rule
1139
1141
 
1140
1142
  @lexer.pop_cmdarg
1141
1143
  @static_env.unextend
1142
-
1143
- @def_level = val[4]
1144
+ @context.pop
1144
1145
  }
1145
1146
  | kMODULE cpath
1146
1147
  {
@@ -1149,7 +1150,7 @@ rule
1149
1150
  }
1150
1151
  bodystmt kEND
1151
1152
  {
1152
- if in_def?
1153
+ if @context.indirectly_in_def?
1153
1154
  diagnostic :error, :module_in_def, nil, val[0]
1154
1155
  end
1155
1156
 
@@ -1161,9 +1162,9 @@ rule
1161
1162
  }
1162
1163
  | kDEF fname
1163
1164
  {
1164
- @def_level += 1
1165
1165
  @static_env.extend_static
1166
1166
  @lexer.push_cmdarg
1167
+ @context.push(:def)
1167
1168
  }
1168
1169
  f_arglist bodystmt kEND
1169
1170
  {
@@ -1172,7 +1173,7 @@ rule
1172
1173
 
1173
1174
  @lexer.pop_cmdarg
1174
1175
  @static_env.unextend
1175
- @def_level -= 1
1176
+ @context.pop
1176
1177
  }
1177
1178
  | kDEF singleton dot_or_colon
1178
1179
  {
@@ -1180,9 +1181,9 @@ rule
1180
1181
  }
1181
1182
  fname
1182
1183
  {
1183
- @def_level += 1
1184
1184
  @static_env.extend_static
1185
1185
  @lexer.push_cmdarg
1186
+ @context.push(:defs)
1186
1187
  }
1187
1188
  f_arglist bodystmt kEND
1188
1189
  {
@@ -1191,7 +1192,7 @@ rule
1191
1192
 
1192
1193
  @lexer.pop_cmdarg
1193
1194
  @static_env.unextend
1194
- @def_level -= 1
1195
+ @context.pop
1195
1196
  }
1196
1197
  | kBREAK
1197
1198
  {
@@ -1490,24 +1491,36 @@ opt_block_args_tail:
1490
1491
  result = @builder.args(nil, val[0], nil)
1491
1492
  }
1492
1493
 
1493
- lambda_body: tLAMBEG compstmt tRCURLY
1494
+ lambda_body: tLAMBEG
1495
+ {
1496
+ @context.push(:lambda)
1497
+ }
1498
+ compstmt tRCURLY
1494
1499
  {
1495
- result = [ val[0], val[1], val[2] ]
1500
+ result = [ val[0], val[2], val[3] ]
1501
+ @context.pop
1496
1502
  }
1497
- | kDO_LAMBDA compstmt kEND
1503
+ | kDO_LAMBDA
1498
1504
  {
1499
- result = [ val[0], val[1], val[2] ]
1505
+ @context.push(:lambda)
1506
+ }
1507
+ compstmt kEND
1508
+ {
1509
+ result = [ val[0], val[2], val[3] ]
1510
+ @context.pop
1500
1511
  }
1501
1512
 
1502
1513
  do_block: kDO_BLOCK
1503
1514
  {
1504
1515
  @static_env.extend_dynamic
1516
+ @context.push(:block)
1505
1517
  }
1506
1518
  opt_block_param compstmt kEND
1507
1519
  {
1508
1520
  result = [ val[0], val[2], val[3], val[4] ]
1509
1521
 
1510
1522
  @static_env.unextend
1523
+ @context.pop
1511
1524
  }
1512
1525
 
1513
1526
  block_call: command do_block
@@ -1594,22 +1607,26 @@ opt_block_args_tail:
1594
1607
  brace_block: tLCURLY
1595
1608
  {
1596
1609
  @static_env.extend_dynamic
1610
+ @context.push(:block)
1597
1611
  }
1598
1612
  opt_block_param compstmt tRCURLY
1599
1613
  {
1600
1614
  result = [ val[0], val[2], val[3], val[4] ]
1601
1615
 
1602
1616
  @static_env.unextend
1617
+ @context.pop
1603
1618
  }
1604
1619
  | kDO
1605
1620
  {
1606
1621
  @static_env.extend_dynamic
1622
+ @context.push(:block)
1607
1623
  }
1608
1624
  opt_block_param compstmt kEND
1609
1625
  {
1610
1626
  result = [ val[0], val[2], val[3], val[4] ]
1611
1627
 
1612
1628
  @static_env.unextend
1629
+ @context.pop
1613
1630
  }
1614
1631
 
1615
1632
  case_body: kWHEN args then compstmt cases
@@ -2329,8 +2346,6 @@ end
2329
2346
 
2330
2347
  require 'parser'
2331
2348
 
2332
- Parser.check_for_encoding_support
2333
-
2334
2349
  ---- inner
2335
2350
 
2336
2351
  def version