opal 0.9.4 → 0.10.0.beta1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitattributes +1 -0
- data/.gitignore +2 -3
- data/.gitmodules +5 -2
- data/.jshintrc +1 -8
- data/.rspec +1 -1
- data/.travis.yml +15 -23
- data/CHANGELOG.md +511 -326
- data/CODE_OF_CONDUCT.md +13 -15
- data/CONTRIBUTING.md +26 -216
- data/Gemfile +20 -12
- data/Guardfile +2 -2
- data/HACKING.md +230 -0
- data/README.md +6 -7
- data/bin/opal-mspec +1 -1
- data/config.ru +2 -2
- data/docs/faq.md +1 -1
- data/docs/source_maps.md +1 -1
- data/lib/opal.rb +1 -0
- data/lib/opal/builder.rb +1 -1
- data/lib/opal/cli.rb +30 -28
- data/lib/opal/cli_options.rb +3 -0
- data/lib/opal/cli_runners.rb +14 -1
- data/lib/opal/cli_runners/{apple_script.rb → applescript.rb} +3 -3
- data/lib/opal/cli_runners/nashorn.rb +2 -2
- data/lib/opal/cli_runners/nodejs.rb +2 -2
- data/lib/opal/cli_runners/phantom.js +24 -0
- data/lib/opal/cli_runners/phantomjs.rb +10 -10
- data/lib/opal/cli_runners/server.rb +3 -3
- data/lib/opal/compiler.rb +43 -4
- data/lib/opal/config.rb +3 -1
- data/lib/opal/errors.rb +13 -0
- data/lib/opal/fragment.rb +0 -13
- data/lib/opal/nodes.rb +10 -0
- data/lib/opal/nodes/args/initialize_kwargs.rb +28 -0
- data/lib/opal/nodes/args/kwarg.rb +29 -0
- data/lib/opal/nodes/args/kwoptarg.rb +29 -0
- data/lib/opal/nodes/args/kwrestarg.rb +39 -0
- data/lib/opal/nodes/args/mlhsarg.rb +79 -0
- data/lib/opal/nodes/args/normarg.rb +26 -0
- data/lib/opal/nodes/args/optarg.rb +27 -0
- data/lib/opal/nodes/args/post_args.rb +200 -0
- data/lib/opal/nodes/args/post_kwargs.rb +31 -0
- data/lib/opal/nodes/args/restarg.rb +33 -0
- data/lib/opal/nodes/base.rb +12 -0
- data/lib/opal/nodes/call.rb +92 -33
- data/lib/opal/nodes/def.rb +26 -169
- data/lib/opal/nodes/hash.rb +10 -4
- data/lib/opal/nodes/helpers.rb +6 -3
- data/lib/opal/nodes/inline_args.rb +61 -0
- data/lib/opal/nodes/iter.rb +73 -82
- data/lib/opal/nodes/logic.rb +12 -2
- data/lib/opal/nodes/masgn.rb +1 -2
- data/lib/opal/nodes/node_with_args.rb +141 -0
- data/lib/opal/nodes/rescue.rb +121 -43
- data/lib/opal/nodes/scope.rb +24 -5
- data/lib/opal/nodes/super.rb +122 -54
- data/lib/opal/nodes/top.rb +0 -12
- data/lib/opal/nodes/yield.rb +2 -13
- data/lib/opal/parser.rb +67 -39
- data/lib/opal/parser/grammar.rb +3319 -2961
- data/lib/opal/parser/grammar.y +234 -46
- data/lib/opal/parser/lexer.rb +105 -17
- data/lib/opal/parser/sexp.rb +4 -0
- data/lib/opal/paths.rb +4 -0
- data/lib/opal/regexp_anchors.rb +19 -1
- data/lib/opal/sprockets.rb +21 -18
- data/lib/opal/sprockets/environment.rb +0 -8
- data/lib/opal/sprockets/processor.rb +13 -16
- data/lib/opal/sprockets/server.rb +6 -12
- data/lib/opal/version.rb +1 -1
- data/opal.gemspec +1 -0
- data/opal/corelib/array.rb +209 -131
- data/opal/corelib/basic_object.rb +7 -3
- data/opal/corelib/class.rb +11 -17
- data/opal/corelib/constants.rb +2 -2
- data/opal/corelib/enumerable.rb +178 -355
- data/opal/corelib/enumerator.rb +3 -46
- data/opal/corelib/error.rb +2 -2
- data/opal/corelib/file.rb +13 -1
- data/opal/corelib/hash.rb +26 -56
- data/opal/corelib/helpers.rb +10 -0
- data/opal/corelib/kernel.rb +6 -3
- data/opal/corelib/module.rb +62 -31
- data/opal/corelib/number.rb +7 -16
- data/opal/corelib/proc.rb +24 -9
- data/opal/corelib/range.rb +4 -13
- data/opal/corelib/runtime.js +515 -378
- data/opal/corelib/string.rb +21 -49
- data/opal/corelib/struct.rb +50 -35
- data/opal/corelib/unsupported.rb +18 -30
- data/opal/opal.rb +0 -1
- data/opal/opal/mini.rb +1 -0
- data/spec/README.md +6 -4
- data/spec/filters/bugs/array.rb +0 -42
- data/spec/filters/bugs/basicobject.rb +0 -2
- data/spec/filters/bugs/bigdecimal.rb +160 -0
- data/spec/filters/bugs/class.rb +0 -5
- data/spec/filters/bugs/date.rb +1 -48
- data/spec/filters/bugs/enumerable.rb +4 -12
- data/spec/filters/bugs/enumerator.rb +0 -1
- data/spec/filters/bugs/exception.rb +4 -3
- data/spec/filters/bugs/float.rb +4 -2
- data/spec/filters/bugs/kernel.rb +25 -10
- data/spec/filters/bugs/language.rb +119 -68
- data/spec/filters/bugs/method.rb +135 -0
- data/spec/filters/bugs/module.rb +13 -28
- data/spec/filters/bugs/proc.rb +18 -8
- data/spec/filters/bugs/range.rb +0 -3
- data/spec/filters/bugs/rational.rb +4 -0
- data/spec/filters/bugs/regexp.rb +68 -36
- data/spec/filters/bugs/string.rb +1 -1
- data/spec/filters/bugs/struct.rb +0 -12
- data/spec/filters/bugs/time.rb +1 -0
- data/spec/filters/bugs/unboundmethod.rb +2 -1
- data/spec/filters/unsupported/freeze.rb +3 -1
- data/spec/filters/unsupported/language.rb +0 -7
- data/spec/filters/unsupported/privacy.rb +7 -6
- data/spec/filters/unsupported/string.rb +10 -0
- data/spec/filters/unsupported/struct.rb +3 -0
- data/spec/filters/unsupported/symbol.rb +9 -0
- data/spec/filters/unsupported/taint.rb +0 -3
- data/spec/filters/unsupported/thread.rb +1 -0
- data/spec/lib/cli_runners/phantomjs_spec.rb +39 -0
- data/spec/lib/cli_spec.rb +42 -1
- data/spec/lib/compiler/call_spec.rb +700 -0
- data/spec/lib/compiler_spec.rb +46 -28
- data/spec/lib/config_spec.rb +13 -0
- data/spec/lib/parser/call_spec.rb +18 -0
- data/spec/lib/parser/def_spec.rb +29 -0
- data/spec/lib/parser/iter_spec.rb +15 -15
- data/spec/lib/parser/lambda_spec.rb +153 -12
- data/spec/lib/parser/string_spec.rb +5 -0
- data/spec/lib/parser/undef_spec.rb +1 -1
- data/spec/lib/parser/variables_spec.rb +24 -0
- data/spec/lib/paths_spec.rb +12 -5
- data/spec/lib/spec_helper.rb +5 -0
- data/spec/lib/sprockets/processor_spec.rb +6 -5
- data/spec/lib/sprockets_spec.rb +8 -0
- data/spec/mspec-opal/formatters.rb +188 -0
- data/spec/mspec-opal/runner.rb +193 -0
- data/spec/opal/core/enumerator/with_index_spec.rb +6 -0
- data/spec/opal/core/kernel/define_singleton_method_spec.rb +1 -1
- data/spec/opal/core/kernel/instance_variables_spec.rb +14 -0
- data/spec/opal/core/kernel/loop_spec.rb +1 -1
- data/spec/opal/core/kernel/raise_spec.rb +1 -1
- data/spec/opal/core/language/heredoc_spec.rb +42 -0
- data/spec/opal/core/language/rescue_spec.rb +18 -0
- data/spec/opal/core/language_spec.rb +22 -0
- data/spec/opal/core/module/const_defined_spec.rb +1 -2
- data/spec/opal/core/module/name_spec.rb +6 -0
- data/spec/opal/core/runtime/bridged_classes_spec.rb +14 -2
- data/spec/opal/core/runtime/rescue_spec.rb +12 -2
- data/spec/opal/core/runtime/super_spec.rb +1 -0
- data/spec/opal/core/string_spec.rb +21 -0
- data/spec/opal/stdlib/js_spec.rb +1 -1
- data/spec/opal/stdlib/native/hash_spec.rb +7 -0
- data/spec/opal/stdlib/promise/always_spec.rb +24 -5
- data/spec/opal/stdlib/promise/rescue_spec.rb +15 -6
- data/spec/opal/stdlib/promise/then_spec.rb +13 -5
- data/spec/opal/stdlib/promise/trace_spec.rb +5 -6
- data/spec/opal/stdlib/strscan/scan_spec.rb +1 -1
- data/spec/ruby_specs +122 -0
- data/spec/spec_helper.rb +3 -15
- data/stdlib/base64.rb +51 -121
- data/stdlib/bigdecimal.rb +231 -0
- data/stdlib/bigdecimal/bignumber.js.rb +11 -0
- data/stdlib/bigdecimal/kernel.rb +5 -0
- data/stdlib/date.rb +252 -10
- data/stdlib/native.rb +38 -38
- data/stdlib/nodejs/dir.rb +8 -6
- data/stdlib/nodejs/file.rb +28 -3
- data/stdlib/nodejs/node_modules/.bin/js-yaml +1 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/.bin/esparse +1 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/.bin/esvalidate +1 -0
- data/stdlib/nodejs/require.rb +1 -1
- data/stdlib/nodejs/yaml.rb +3 -2
- data/stdlib/opal-parser.rb +7 -2
- data/stdlib/pathname.rb +23 -1
- data/stdlib/phantomjs.rb +10 -0
- data/stdlib/promise.rb +38 -23
- data/tasks/building.rake +3 -3
- data/tasks/testing.rake +27 -14
- data/tasks/testing/mspec_special_calls.rb +1 -1
- data/tasks/testing/sprockets-phantomjs.js +4 -0
- data/test/opal/test_keyword.rb +110 -110
- data/test/opal/unsupported_and_bugs.rb +30 -0
- data/vendored-minitest/minitest/assertions.rb +1 -1
- metadata +65 -15
- data/.spectator +0 -2
- data/.spectator-mspec +0 -3
- data/opal/corelib/array/inheritance.rb +0 -127
- data/spec/rubyspecs +0 -139
data/lib/opal/parser/grammar.y
CHANGED
@@ -137,10 +137,7 @@ rule
|
|
137
137
|
result = new_rescue_mod(val[1], val[0], val[2])
|
138
138
|
}
|
139
139
|
| klEND tLCURLY compstmt tRCURLY
|
140
|
-
|
|
141
|
-
{
|
142
|
-
result = new_assign(val[0], val[1], val[2])
|
143
|
-
}
|
140
|
+
| command_asgn
|
144
141
|
| mlhs tEQL command_call
|
145
142
|
{
|
146
143
|
result = s(:masgn, val[0], s(:to_ary, val[2]))
|
@@ -172,6 +169,15 @@ rule
|
|
172
169
|
}
|
173
170
|
| expr
|
174
171
|
|
172
|
+
command_asgn: lhs tEQL command_call
|
173
|
+
{
|
174
|
+
result = new_assign(val[0], val[1], val[2])
|
175
|
+
}
|
176
|
+
| lhs tEQL command_asgn
|
177
|
+
{
|
178
|
+
result = new_assign(val[0], val[1], val[2])
|
179
|
+
}
|
180
|
+
|
175
181
|
expr: command_call
|
176
182
|
| expr kAND expr
|
177
183
|
{
|
@@ -195,18 +201,6 @@ rule
|
|
195
201
|
|
196
202
|
command_call: command
|
197
203
|
| block_command
|
198
|
-
| kRETURN call_args
|
199
|
-
{
|
200
|
-
result = new_return(val[0], val[1])
|
201
|
-
}
|
202
|
-
| kBREAK call_args
|
203
|
-
{
|
204
|
-
result = new_break(val[0], val[1])
|
205
|
-
}
|
206
|
-
| kNEXT call_args
|
207
|
-
{
|
208
|
-
result = new_next(val[0], val[1])
|
209
|
-
}
|
210
204
|
|
211
205
|
block_command: block_call
|
212
206
|
| block_call tJSDOT operation2 command_args
|
@@ -214,12 +208,18 @@ rule
|
|
214
208
|
| block_call tCOLON2 operation2 command_args
|
215
209
|
|
216
210
|
cmd_brace_block: tLBRACE_ARG opt_block_var compstmt tRCURLY
|
211
|
+
{
|
212
|
+
result = new_iter(val[1], val[2])
|
213
|
+
}
|
217
214
|
|
218
215
|
command: operation command_args =tLOWEST
|
219
216
|
{
|
220
217
|
result = new_call(nil, val[0], val[1])
|
221
218
|
}
|
222
219
|
| operation command_args cmd_brace_block
|
220
|
+
{
|
221
|
+
result = new_call(nil, val[0], val[1]) << val[2]
|
222
|
+
}
|
223
223
|
| primary_value tJSDOT operation2 command_args =tLOWEST
|
224
224
|
{
|
225
225
|
result = new_js_call(val[0], val[2], val[3])
|
@@ -243,6 +243,18 @@ rule
|
|
243
243
|
{
|
244
244
|
result = new_yield val[1]
|
245
245
|
}
|
246
|
+
| kRETURN call_args
|
247
|
+
{
|
248
|
+
result = new_return(val[0], val[1])
|
249
|
+
}
|
250
|
+
| kBREAK call_args
|
251
|
+
{
|
252
|
+
result = new_break(val[0], val[1])
|
253
|
+
}
|
254
|
+
| kNEXT call_args
|
255
|
+
{
|
256
|
+
result = new_next(val[0], val[1])
|
257
|
+
}
|
246
258
|
|
247
259
|
mlhs: mlhs_basic
|
248
260
|
{
|
@@ -956,7 +968,6 @@ rule
|
|
956
968
|
| kDEF fname
|
957
969
|
{
|
958
970
|
push_scope
|
959
|
-
lexer.lex_state = :expr_endfn
|
960
971
|
}
|
961
972
|
f_arglist bodystmt kEND
|
962
973
|
{
|
@@ -1002,6 +1013,31 @@ rule
|
|
1002
1013
|
| tCOLON
|
1003
1014
|
| kDO_COND
|
1004
1015
|
|
1016
|
+
|
1017
|
+
opt_bv_decl: opt_nl
|
1018
|
+
{
|
1019
|
+
result = []
|
1020
|
+
}
|
1021
|
+
| opt_nl tSEMI bv_decls opt_nl
|
1022
|
+
{
|
1023
|
+
result = val[2]
|
1024
|
+
}
|
1025
|
+
|
1026
|
+
bv_decls: bvar
|
1027
|
+
{
|
1028
|
+
result = [ val[0] ]
|
1029
|
+
}
|
1030
|
+
| bv_decls tCOMMA bvar
|
1031
|
+
{
|
1032
|
+
result = val[0] << val[2]
|
1033
|
+
}
|
1034
|
+
|
1035
|
+
bvar: tIDENTIFIER
|
1036
|
+
{
|
1037
|
+
result = new_shadowarg(val[0])
|
1038
|
+
}
|
1039
|
+
| f_bad_arg
|
1040
|
+
|
1005
1041
|
lambda: f_larglist lambda_body
|
1006
1042
|
{
|
1007
1043
|
result = new_call nil, [:lambda, []], []
|
@@ -1010,13 +1046,16 @@ rule
|
|
1010
1046
|
|
1011
1047
|
f_larglist: tLPAREN2 block_param tRPAREN
|
1012
1048
|
{
|
1013
|
-
result = val[1]
|
1049
|
+
result = new_block_args(*val[1])
|
1014
1050
|
}
|
1015
1051
|
| tLPAREN2 tRPAREN
|
1016
1052
|
{
|
1017
1053
|
result = nil
|
1018
1054
|
}
|
1019
1055
|
| block_param
|
1056
|
+
{
|
1057
|
+
result = new_block_args(*val[0])
|
1058
|
+
}
|
1020
1059
|
| none
|
1021
1060
|
|
1022
1061
|
lambda_body: tLAMBEG compstmt tRCURLY
|
@@ -1060,22 +1099,35 @@ rule
|
|
1060
1099
|
}
|
1061
1100
|
|
1062
1101
|
opt_block_var: none
|
1063
|
-
| tPIPE tPIPE
|
1102
|
+
| tPIPE opt_bv_decl tPIPE
|
1064
1103
|
{
|
1065
|
-
result = nil
|
1104
|
+
result = new_block_args(nil, [val[1]])
|
1066
1105
|
}
|
1067
1106
|
| tOROP
|
1068
1107
|
{
|
1069
1108
|
result = nil
|
1070
1109
|
}
|
1071
|
-
| tPIPE block_param tPIPE
|
1110
|
+
| tPIPE block_param opt_bv_decl tPIPE
|
1072
1111
|
{
|
1073
|
-
|
1112
|
+
val[1] << val[2]
|
1113
|
+
result = new_block_args(*val[1])
|
1074
1114
|
}
|
1075
1115
|
|
1076
|
-
block_args_tail:
|
1116
|
+
block_args_tail: f_block_kwarg tCOMMA f_kwrest opt_f_block_arg
|
1077
1117
|
{
|
1078
|
-
result = val[0]
|
1118
|
+
result = [val[0], val[2], val[3]]
|
1119
|
+
}
|
1120
|
+
| f_block_kwarg opt_f_block_arg
|
1121
|
+
{
|
1122
|
+
result = [val[0], nil, val[1]]
|
1123
|
+
}
|
1124
|
+
| f_kwrest opt_f_block_arg
|
1125
|
+
{
|
1126
|
+
result = [nil, val[0], val[1]]
|
1127
|
+
}
|
1128
|
+
| f_block_arg
|
1129
|
+
{
|
1130
|
+
result = [nil, nil, val[0]]
|
1079
1131
|
}
|
1080
1132
|
|
1081
1133
|
opt_block_args_tail: tCOMMA block_args_tail
|
@@ -1089,39 +1141,79 @@ opt_block_args_tail: tCOMMA block_args_tail
|
|
1089
1141
|
|
1090
1142
|
block_param: f_arg tCOMMA f_block_optarg tCOMMA f_rest_arg opt_block_args_tail
|
1091
1143
|
{
|
1092
|
-
|
1144
|
+
optarg = new_optarg(val[2])
|
1145
|
+
restarg = new_restarg(val[4])
|
1146
|
+
result = [val[0] + optarg + restarg, val[5]]
|
1147
|
+
}
|
1148
|
+
| f_arg tCOMMA f_block_optarg tCOMMA f_rest_arg tCOMMA f_arg opt_block_args_tail
|
1149
|
+
{
|
1150
|
+
optarg = new_optarg(val[2])
|
1151
|
+
restarg = new_restarg(val[4])
|
1152
|
+
result = [val[0] + optarg + restarg + val[6], val[7]]
|
1093
1153
|
}
|
1094
1154
|
| f_arg tCOMMA f_block_optarg opt_block_args_tail
|
1095
1155
|
{
|
1096
|
-
|
1156
|
+
optarg = new_optarg(val[2])
|
1157
|
+
result = [val[0] + optarg, val[3]]
|
1158
|
+
}
|
1159
|
+
| f_arg tCOMMA f_block_optarg tCOMMA f_arg opt_block_args_tail
|
1160
|
+
{
|
1161
|
+
optarg = new_optarg(val[2])
|
1162
|
+
result = [val[0] + optarg + val[4], val[5]]
|
1097
1163
|
}
|
1098
1164
|
| f_arg tCOMMA f_rest_arg opt_block_args_tail
|
1099
1165
|
{
|
1100
|
-
|
1166
|
+
restarg = new_restarg(val[2])
|
1167
|
+
result = [val[0] + restarg, val[3]]
|
1101
1168
|
}
|
1102
1169
|
| f_arg tCOMMA
|
1103
1170
|
{
|
1104
|
-
result =
|
1171
|
+
result = [val[0], nil]
|
1172
|
+
}
|
1173
|
+
| f_arg tCOMMA f_rest_arg tCOMMA f_arg opt_block_args_tail
|
1174
|
+
{
|
1175
|
+
restarg = new_restarg(val[2])
|
1176
|
+
result = [val[0] + restarg + val[4], val[5]]
|
1105
1177
|
}
|
1106
1178
|
| f_arg opt_block_args_tail
|
1107
1179
|
{
|
1108
|
-
result =
|
1180
|
+
result = [val[0], val[1]]
|
1109
1181
|
}
|
1110
1182
|
| f_block_optarg tCOMMA f_rest_arg opt_block_args_tail
|
1111
1183
|
{
|
1112
|
-
|
1184
|
+
optarg = new_optarg(val[0])
|
1185
|
+
restarg = new_restarg(val[2])
|
1186
|
+
result = [optarg + restarg, val[3]]
|
1187
|
+
}
|
1188
|
+
| f_block_optarg tCOMMA f_rest_arg tCOMMA f_arg opt_block_args_tail
|
1189
|
+
{
|
1190
|
+
optarg = new_optarg(val[0])
|
1191
|
+
restarg = new_restarg(val[2])
|
1192
|
+
result = [optarg + restarg + val[4], val[5]]
|
1113
1193
|
}
|
1114
1194
|
| f_block_optarg opt_block_args_tail
|
1115
1195
|
{
|
1116
|
-
|
1196
|
+
optarg= new_optarg(val[0])
|
1197
|
+
result = [optarg, val[1]]
|
1198
|
+
}
|
1199
|
+
| f_block_optarg tCOMMA f_arg opt_block_args_tail
|
1200
|
+
{
|
1201
|
+
optarg = new_optarg(val[0])
|
1202
|
+
result = [optarg + val[2], val[3]]
|
1117
1203
|
}
|
1118
1204
|
| f_rest_arg opt_block_args_tail
|
1119
1205
|
{
|
1120
|
-
|
1206
|
+
restarg = new_restarg(val[0])
|
1207
|
+
result = [restarg, val[1]]
|
1208
|
+
}
|
1209
|
+
| f_rest_arg tCOMMA f_arg opt_block_args_tail
|
1210
|
+
{
|
1211
|
+
restarg = new_restarg(val[0])
|
1212
|
+
result = [restarg + val[2], val[3]]
|
1121
1213
|
}
|
1122
1214
|
| block_args_tail
|
1123
1215
|
{
|
1124
|
-
result =
|
1216
|
+
result = [nil, val[0]]
|
1125
1217
|
}
|
1126
1218
|
|
1127
1219
|
do_block: kDO_BLOCK
|
@@ -1512,7 +1604,7 @@ xstring_contents: none
|
|
1512
1604
|
result = nil
|
1513
1605
|
}
|
1514
1606
|
|
1515
|
-
f_arglist: tLPAREN2 f_args
|
1607
|
+
f_arglist: tLPAREN2 f_args opt_bv_decl tRPAREN
|
1516
1608
|
{
|
1517
1609
|
result = val[1]
|
1518
1610
|
lexer.lex_state = :expr_beg
|
@@ -1549,6 +1641,25 @@ xstring_contents: none
|
|
1549
1641
|
result = new_kwarg(val[0])
|
1550
1642
|
}
|
1551
1643
|
|
1644
|
+
f_block_kw: f_label primary_value
|
1645
|
+
{
|
1646
|
+
result = new_kwoptarg(val[0], val[1])
|
1647
|
+
}
|
1648
|
+
| f_label
|
1649
|
+
{
|
1650
|
+
result = new_kwarg(val[0])
|
1651
|
+
}
|
1652
|
+
|
1653
|
+
f_block_kwarg: f_block_kw
|
1654
|
+
{
|
1655
|
+
result = [val[0]]
|
1656
|
+
}
|
1657
|
+
| f_block_kwarg tCOMMA f_block_kw
|
1658
|
+
{
|
1659
|
+
result = val[0]
|
1660
|
+
result << val[2]
|
1661
|
+
}
|
1662
|
+
|
1552
1663
|
f_kwarg: f_kw
|
1553
1664
|
{
|
1554
1665
|
result = [val[0]]
|
@@ -1587,39 +1698,79 @@ xstring_contents: none
|
|
1587
1698
|
|
1588
1699
|
f_args: f_arg tCOMMA f_optarg tCOMMA f_rest_arg opt_args_tail
|
1589
1700
|
{
|
1590
|
-
|
1701
|
+
optarg = new_optarg(val[2])
|
1702
|
+
restarg = new_restarg(val[4])
|
1703
|
+
result = new_args(val[0] + optarg + restarg, val[5])
|
1704
|
+
}
|
1705
|
+
| f_arg tCOMMA f_optarg tCOMMA f_rest_arg tCOMMA f_arg opt_args_tail
|
1706
|
+
{
|
1707
|
+
optarg = new_optarg(val[2])
|
1708
|
+
restarg = new_restarg(val[4])
|
1709
|
+
result = new_args(val[0] + optarg + restarg + val[6], val[7])
|
1591
1710
|
}
|
1592
1711
|
| f_arg tCOMMA f_optarg opt_args_tail
|
1593
1712
|
{
|
1594
|
-
|
1713
|
+
optarg = new_optarg(val[2])
|
1714
|
+
result = new_args(val[0] + optarg, val[3])
|
1715
|
+
}
|
1716
|
+
| f_arg tCOMMA f_optarg tCOMMA f_arg opt_args_tail
|
1717
|
+
{
|
1718
|
+
optarg = new_optarg(val[2])
|
1719
|
+
result = new_args(val[0] + optarg + val[4], val[5])
|
1595
1720
|
}
|
1596
1721
|
| f_arg tCOMMA f_rest_arg opt_args_tail
|
1597
1722
|
{
|
1598
|
-
|
1723
|
+
restarg = new_restarg(val[2])
|
1724
|
+
result = new_args(val[0] + restarg, val[3])
|
1725
|
+
}
|
1726
|
+
| f_arg tCOMMA f_rest_arg tCOMMA f_arg opt_args_tail
|
1727
|
+
{
|
1728
|
+
restarg = new_restarg(val[2])
|
1729
|
+
result = new_args(val[0] + restarg + val[4], val[5])
|
1599
1730
|
}
|
1600
1731
|
| f_arg opt_args_tail
|
1601
1732
|
{
|
1602
|
-
result = new_args(val[0],
|
1733
|
+
result = new_args(val[0], val[1])
|
1603
1734
|
}
|
1604
1735
|
| f_optarg tCOMMA f_rest_arg opt_args_tail
|
1605
1736
|
{
|
1606
|
-
|
1737
|
+
optarg = new_optarg(val[0])
|
1738
|
+
restarg = new_restarg(val[2])
|
1739
|
+
result = new_args(optarg + restarg, val[3])
|
1740
|
+
}
|
1741
|
+
| f_optarg tCOMMA f_rest_arg tCOMMA f_arg opt_args_tail
|
1742
|
+
{
|
1743
|
+
optarg = new_optarg(val[0])
|
1744
|
+
restarg = new_restarg(val[2])
|
1745
|
+
result = new_args(optarg + restarg + val[4], val[5])
|
1607
1746
|
}
|
1608
1747
|
| f_optarg opt_args_tail
|
1609
1748
|
{
|
1610
|
-
|
1749
|
+
optarg = new_optarg(val[0])
|
1750
|
+
result = new_args(optarg, val[1])
|
1751
|
+
}
|
1752
|
+
| f_optarg tCOMMA f_arg opt_args_tail
|
1753
|
+
{
|
1754
|
+
optarg = new_optarg(val[0])
|
1755
|
+
result = new_args(optarg + val[2], val[3])
|
1611
1756
|
}
|
1612
1757
|
| f_rest_arg opt_args_tail
|
1613
1758
|
{
|
1614
|
-
|
1759
|
+
optarg = new_restarg(val[0])
|
1760
|
+
result = new_args(optarg, val[1])
|
1761
|
+
}
|
1762
|
+
| f_rest_arg tCOMMA f_arg opt_args_tail
|
1763
|
+
{
|
1764
|
+
restarg = new_restarg(val[0])
|
1765
|
+
result = new_args(restarg + val[2], val[3])
|
1615
1766
|
}
|
1616
1767
|
| args_tail
|
1617
1768
|
{
|
1618
|
-
result = new_args(nil,
|
1769
|
+
result = new_args(nil, val[0])
|
1619
1770
|
}
|
1620
1771
|
| # none
|
1621
1772
|
{
|
1622
|
-
result = new_args(nil, nil
|
1773
|
+
result = new_args(nil, nil)
|
1623
1774
|
}
|
1624
1775
|
|
1625
1776
|
f_norm_arg: f_bad_arg
|
@@ -1660,13 +1811,16 @@ xstring_contents: none
|
|
1660
1811
|
|
1661
1812
|
f_marg: f_norm_arg
|
1662
1813
|
{
|
1663
|
-
result = s(:
|
1814
|
+
result = s(:arg, val[0])
|
1664
1815
|
}
|
1665
1816
|
| tLPAREN f_margs tRPAREN
|
1817
|
+
{
|
1818
|
+
result = val[1]
|
1819
|
+
}
|
1666
1820
|
|
1667
1821
|
f_marg_list: f_marg
|
1668
1822
|
{
|
1669
|
-
result = s(:
|
1823
|
+
result = s(:mlhs, val[0])
|
1670
1824
|
}
|
1671
1825
|
| f_marg_list tCOMMA f_marg
|
1672
1826
|
{
|
@@ -1676,9 +1830,39 @@ xstring_contents: none
|
|
1676
1830
|
|
1677
1831
|
f_margs: f_marg_list
|
1678
1832
|
| f_marg_list tCOMMA tSTAR f_norm_arg
|
1833
|
+
{
|
1834
|
+
result = val[0].push(s(:restarg, val[3]))
|
1835
|
+
}
|
1836
|
+
| f_marg_list tCOMMA tSTAR f_norm_arg tCOMMA f_marg_list
|
1837
|
+
{
|
1838
|
+
result = val[0].push(s(:restarg, val[3])).concat(val[5][1..-1])
|
1839
|
+
}
|
1679
1840
|
| f_marg_list tCOMMA tSTAR
|
1841
|
+
{
|
1842
|
+
result = val[0].push(s(:restarg))
|
1843
|
+
}
|
1844
|
+
| f_marg_list tCOMMA tSTAR tCOMMA f_marg_list
|
1845
|
+
{
|
1846
|
+
result = val[0].push(s(:restarg)).concat(val[4][1..-1])
|
1847
|
+
}
|
1680
1848
|
| tSTAR f_norm_arg
|
1849
|
+
{
|
1850
|
+
result = s(:mlhs, s(:restarg, val[1]))
|
1851
|
+
}
|
1852
|
+
| tSTAR f_norm_arg tCOMMA f_marg_list
|
1853
|
+
{
|
1854
|
+
val[3].insert(1, s(:restarg, val[1]))
|
1855
|
+
result = val[3]
|
1856
|
+
}
|
1681
1857
|
| tSTAR
|
1858
|
+
{
|
1859
|
+
result = s(:mlhs, s(:restarg))
|
1860
|
+
}
|
1861
|
+
| tSTAR tCOMMA f_marg_list
|
1862
|
+
{
|
1863
|
+
val[2].insert(1, s(:restarg))
|
1864
|
+
result = val[2]
|
1865
|
+
}
|
1682
1866
|
|
1683
1867
|
f_arg: f_arg_item
|
1684
1868
|
{
|
@@ -1758,7 +1942,7 @@ xstring_contents: none
|
|
1758
1942
|
}
|
1759
1943
|
| assocs tCOMMA assoc
|
1760
1944
|
{
|
1761
|
-
result = val[0].
|
1945
|
+
result = val[0].concat(val[2])
|
1762
1946
|
}
|
1763
1947
|
|
1764
1948
|
assoc: arg_value tASSOC arg_value
|
@@ -1773,6 +1957,10 @@ xstring_contents: none
|
|
1773
1957
|
{
|
1774
1958
|
result = [s(:sym, source(val[1]).to_sym), val[3]]
|
1775
1959
|
}
|
1960
|
+
| tDSTAR arg_value
|
1961
|
+
{
|
1962
|
+
result = [new_kwsplat(val[1])]
|
1963
|
+
}
|
1776
1964
|
|
1777
1965
|
operation: tIDENTIFIER
|
1778
1966
|
| tCONSTANT
|