OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef V8_PREPARSER_H | 5 #ifndef V8_PREPARSER_H |
6 #define V8_PREPARSER_H | 6 #define V8_PREPARSER_H |
7 | 7 |
8 #include "src/bailout-reason.h" | 8 #include "src/bailout-reason.h" |
9 #include "src/expression-classifier.h" | 9 #include "src/expression-classifier.h" |
10 #include "src/func-name-inferrer.h" | 10 #include "src/func-name-inferrer.h" |
(...skipping 1232 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1243 explicit PreParserFactory(void* unused_value_factory) {} | 1243 explicit PreParserFactory(void* unused_value_factory) {} |
1244 PreParserExpression NewStringLiteral(PreParserIdentifier identifier, | 1244 PreParserExpression NewStringLiteral(PreParserIdentifier identifier, |
1245 int pos) { | 1245 int pos) { |
1246 return PreParserExpression::Default(); | 1246 return PreParserExpression::Default(); |
1247 } | 1247 } |
1248 PreParserExpression NewNumberLiteral(double number, | 1248 PreParserExpression NewNumberLiteral(double number, |
1249 int pos) { | 1249 int pos) { |
1250 return PreParserExpression::Default(); | 1250 return PreParserExpression::Default(); |
1251 } | 1251 } |
1252 PreParserExpression NewRegExpLiteral(PreParserIdentifier js_pattern, | 1252 PreParserExpression NewRegExpLiteral(PreParserIdentifier js_pattern, |
1253 PreParserIdentifier js_flags, | 1253 int js_flags, int literal_index, |
1254 int literal_index, | 1254 bool is_strong, int pos) { |
1255 bool is_strong, | |
1256 int pos) { | |
1257 return PreParserExpression::Default(); | 1255 return PreParserExpression::Default(); |
1258 } | 1256 } |
1259 PreParserExpression NewArrayLiteral(PreParserExpressionList values, | 1257 PreParserExpression NewArrayLiteral(PreParserExpressionList values, |
1260 int literal_index, | 1258 int literal_index, |
1261 bool is_strong, | 1259 bool is_strong, |
1262 int pos) { | 1260 int pos) { |
1263 return PreParserExpression::ArrayLiteral(); | 1261 return PreParserExpression::ArrayLiteral(); |
1264 } | 1262 } |
1265 PreParserExpression NewArrayLiteral(PreParserExpressionList values, | 1263 PreParserExpression NewArrayLiteral(PreParserExpressionList values, |
1266 int first_spread_index, int literal_index, | 1264 int first_spread_index, int literal_index, |
(...skipping 952 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2219 if (!scanner()->ScanRegExpPattern(seen_equal)) { | 2217 if (!scanner()->ScanRegExpPattern(seen_equal)) { |
2220 Next(); | 2218 Next(); |
2221 ReportMessage(MessageTemplate::kUnterminatedRegExp); | 2219 ReportMessage(MessageTemplate::kUnterminatedRegExp); |
2222 *ok = false; | 2220 *ok = false; |
2223 return Traits::EmptyExpression(); | 2221 return Traits::EmptyExpression(); |
2224 } | 2222 } |
2225 | 2223 |
2226 int literal_index = function_state_->NextMaterializedLiteralIndex(); | 2224 int literal_index = function_state_->NextMaterializedLiteralIndex(); |
2227 | 2225 |
2228 IdentifierT js_pattern = this->GetNextSymbol(scanner()); | 2226 IdentifierT js_pattern = this->GetNextSymbol(scanner()); |
2229 if (!scanner()->ScanRegExpFlags()) { | 2227 Maybe<RegExp::Flags> flags = scanner()->ScanRegExpFlags(); |
| 2228 if (flags.IsNothing()) { |
2230 Next(); | 2229 Next(); |
2231 ReportMessage(MessageTemplate::kMalformedRegExpFlags); | 2230 ReportMessage(MessageTemplate::kMalformedRegExpFlags); |
2232 *ok = false; | 2231 *ok = false; |
2233 return Traits::EmptyExpression(); | 2232 return Traits::EmptyExpression(); |
2234 } | 2233 } |
2235 IdentifierT js_flags = this->GetNextSymbol(scanner()); | 2234 int js_flags = flags.FromJust(); |
2236 Next(); | 2235 Next(); |
2237 return factory()->NewRegExpLiteral(js_pattern, js_flags, literal_index, | 2236 return factory()->NewRegExpLiteral(js_pattern, js_flags, literal_index, |
2238 is_strong(language_mode()), pos); | 2237 is_strong(language_mode()), pos); |
2239 } | 2238 } |
2240 | 2239 |
2241 | 2240 |
2242 #define CHECK_OK ok); \ | 2241 #define CHECK_OK ok); \ |
2243 if (!*ok) return this->EmptyExpression(); \ | 2242 if (!*ok) return this->EmptyExpression(); \ |
2244 ((void)0 | 2243 ((void)0 |
2245 #define DUMMY ) // to make indentation work | 2244 #define DUMMY ) // to make indentation work |
(...skipping 2008 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4254 return; | 4253 return; |
4255 } | 4254 } |
4256 has_seen_constructor_ = true; | 4255 has_seen_constructor_ = true; |
4257 return; | 4256 return; |
4258 } | 4257 } |
4259 } | 4258 } |
4260 } // namespace internal | 4259 } // namespace internal |
4261 } // namespace v8 | 4260 } // namespace v8 |
4262 | 4261 |
4263 #endif // V8_PREPARSER_H | 4262 #endif // V8_PREPARSER_H |
OLD | NEW |