~ubuntu-branches/ubuntu/trusty/libv8/trusty

« back to all changes in this revision

Viewing changes to test/preparser/strict-identifiers.pyt

  • Committer: Package Import Robot
  • Author(s): Jérémy Lal
  • Date: 2012-02-20 14:08:17 UTC
  • mfrom: (15.1.24 sid)
  • Revision ID: package-import@ubuntu.com-20120220140817-bsvmeoa4sxsj5hbz
Tags: 3.7.12.22-3
Fix mipsel build, allow test debug-step-3 to fail (non-crucial)

Show diffs side-by-side

added added

removed removed

Lines of Context:
138
138
  var x = {set foo($id) { }};
139
139
""")
140
140
 
 
141
label_normal = Template("label-normal-$id", """
 
142
  $id: '';
 
143
""")
 
144
 
 
145
label_strict = StrictTemplate("label-strict-$id", """
 
146
  $id: '';
 
147
""")
 
148
 
 
149
break_normal = Template("break-normal-$id", """
 
150
  for (;;) {
 
151
    break $id;
 
152
  }
 
153
""")
 
154
 
 
155
break_strict = StrictTemplate("break-strict-$id", """
 
156
  for (;;) {
 
157
    break $id;
 
158
  }
 
159
""")
 
160
 
 
161
continue_normal = Template("continue-normal-$id", """
 
162
  for (;;) {
 
163
    continue $id;
 
164
  }
 
165
""")
 
166
 
 
167
continue_strict = StrictTemplate("continue-strict-$id", """
 
168
  for (;;) {
 
169
    continue $id;
 
170
  }
 
171
""")
 
172
 
141
173
non_strict_use = Template("nonstrict-$id", """
142
174
  var $id = 42;
143
175
  $id++;
162
194
  function $id($id) { }
163
195
  x = {$id: 42};
164
196
  x = {get $id() {}, set $id(value) {}};
 
197
  $id: '';
165
198
""")
166
199
 
167
200
identifier_name_source = """
197
230
  prefix_var({"id": id, "op":"--", "opname":"dec"}, "strict_lhs_prefix")
198
231
  postfix_var({"id": id, "op":"++", "opname":"inc"}, "strict_lhs_postfix")
199
232
  postfix_var({"id": id, "op":"--", "opname":"dec"}, "strict_lhs_postfix")
 
233
  label_normal({"id": id}, None)
 
234
  label_strict({"id": id}, None)
 
235
  break_normal({"id": id}, None)
 
236
  break_strict({"id": id}, None)
 
237
  continue_normal({"id": id}, None)
 
238
  continue_strict({"id": id}, None)
200
239
  non_strict_use({"id": id}, None)
201
240
 
202
241
 
205
244
for reserved_word in reserved_words + strict_reserved_words:
206
245
  if (reserved_word in strict_reserved_words):
207
246
    message = "strict_reserved_word"
 
247
    label_message = None
208
248
  elif (reserved_word == "const"):
209
249
    message = "unexpected_token"
 
250
    label_message = message
210
251
  else:
211
252
    message = "reserved_word"
 
253
    label_message = message
212
254
  arg_name_own({"id":reserved_word}, message)
213
255
  arg_name_nested({"id":reserved_word}, message)
214
256
  setter_arg({"id": reserved_word}, message)
225
267
  read_var({"id": reserved_word}, message)
226
268
  identifier_name({"id": reserved_word}, None);
227
269
  identifier_name_strict({"id": reserved_word}, None);
 
270
  label_normal({"id": reserved_word}, label_message)
 
271
  break_normal({"id": reserved_word}, label_message)
 
272
  continue_normal({"id": reserved_word}, label_message)
 
273
  if (reserved_word == "const"):
 
274
    # The error message for this case is different because
 
275
    # ParseLabelledStatementOrExpression will try to parse this as an expression
 
276
    # first, effectively disallowing the use in ParseVariableDeclarations, i.e.
 
277
    # the preparser never sees that 'const' was intended to be a label.
 
278
    label_strict({"id": reserved_word}, "strict_const")
 
279
  else:
 
280
    label_strict({"id": reserved_word}, message)
 
281
  break_strict({"id": reserved_word}, message)
 
282
  continue_strict({"id": reserved_word}, message)
228
283
 
229
284
 
230
285
# Future reserved words in strict mode behave like normal identifiers