| OLD | NEW |
| 1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 import 'package:front_end/src/fasta/errors.dart'; | 5 import 'package:front_end/src/fasta/errors.dart'; |
| 6 import 'package:front_end/src/fasta/parser/identifier_context.dart'; | 6 import 'package:front_end/src/fasta/parser/identifier_context.dart'; |
| 7 import 'package:front_end/src/fasta/parser/parser.dart'; | 7 import 'package:front_end/src/fasta/parser/parser.dart'; |
| 8 import 'package:front_end/src/fasta/scanner/token.dart'; | 8 import 'package:front_end/src/fasta/scanner/token.dart'; |
| 9 import 'package:front_end/src/fasta/source/stack_listener.dart'; | 9 import 'package:front_end/src/fasta/source/stack_listener.dart'; |
| 10 | 10 |
| (...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 182 } | 182 } |
| 183 | 183 |
| 184 void endClassDeclaration( | 184 void endClassDeclaration( |
| 185 int interfacesCount, | 185 int interfacesCount, |
| 186 Token beginToken, | 186 Token beginToken, |
| 187 Token classKeyword, | 187 Token classKeyword, |
| 188 Token extendsKeyword, | 188 Token extendsKeyword, |
| 189 Token implementsKeyword, | 189 Token implementsKeyword, |
| 190 Token endToken) { | 190 Token endToken) { |
| 191 debugEvent("ClassDeclaration"); | 191 debugEvent("ClassDeclaration"); |
| 192 // ignore: strong_mode_down_cast_composite | |
| 193 List<ClassMember> members = pop(); | 192 List<ClassMember> members = pop(); |
| 194 TypeName superclass = pop(); | 193 TypeName superclass = pop(); |
| 195 pop(); // Type variables | 194 pop(); // Type variables |
| 196 String name = pop(); | 195 String name = pop(); |
| 197 // ignore: strong_mode_down_cast_composite | |
| 198 List<Annotation> metadata = pop(); | 196 List<Annotation> metadata = pop(); |
| 199 Comment comment = pop(); | 197 Comment comment = pop(); |
| 200 compilationUnit.declarations.add( | 198 compilationUnit.declarations.add( |
| 201 new ClassDeclaration(comment, metadata, name, superclass, members)); | 199 new ClassDeclaration(comment, metadata, name, superclass, members)); |
| 202 } | 200 } |
| 203 | 201 |
| 204 @override | 202 @override |
| 205 void endCombinators(int count) { | 203 void endCombinators(int count) { |
| 206 debugEvent("Combinators"); | 204 debugEvent("Combinators"); |
| 207 } | 205 } |
| (...skipping 11 matching lines...) Expand all Loading... |
| 219 Token start, Token periodBeforeName, Token endToken) { | 217 Token start, Token periodBeforeName, Token endToken) { |
| 220 debugEvent("ConstructorReference"); | 218 debugEvent("ConstructorReference"); |
| 221 String constructorName = popIfNotNull(periodBeforeName); | 219 String constructorName = popIfNotNull(periodBeforeName); |
| 222 pop(); // Type arguments | 220 pop(); // Type arguments |
| 223 String name = pop(); | 221 String name = pop(); |
| 224 push(new ConstructorReference(name, constructorName)); | 222 push(new ConstructorReference(name, constructorName)); |
| 225 } | 223 } |
| 226 | 224 |
| 227 void endEnum(Token enumKeyword, Token endBrace, int count) { | 225 void endEnum(Token enumKeyword, Token endBrace, int count) { |
| 228 debugEvent("Enum"); | 226 debugEvent("Enum"); |
| 229 // ignore: strong_mode_down_cast_composite | |
| 230 List<EnumConstantDeclaration> constants = popList(count); | 227 List<EnumConstantDeclaration> constants = popList(count); |
| 231 String name = pop(); | 228 String name = pop(); |
| 232 // ignore: strong_mode_down_cast_composite | |
| 233 List<Annotation> metadata = pop(); | 229 List<Annotation> metadata = pop(); |
| 234 Comment comment = pop(); | 230 Comment comment = pop(); |
| 235 compilationUnit.declarations | 231 compilationUnit.declarations |
| 236 .add(new EnumDeclaration(comment, metadata, name, constants)); | 232 .add(new EnumDeclaration(comment, metadata, name, constants)); |
| 237 } | 233 } |
| 238 | 234 |
| 239 @override | 235 @override |
| 240 void endFactoryMethod( | 236 void endFactoryMethod( |
| 241 Token beginToken, Token factoryKeyword, Token endToken) { | 237 Token beginToken, Token factoryKeyword, Token endToken) { |
| 242 debugEvent("FactoryMethod"); | 238 debugEvent("FactoryMethod"); |
| 243 pop(); // Body | 239 pop(); // Body |
| 244 ConstructorReference name = pop(); | 240 ConstructorReference name = pop(); |
| 245 // ignore: strong_mode_down_cast_composite | |
| 246 List<Annotation> metadata = pop(); | 241 List<Annotation> metadata = pop(); |
| 247 Comment comment = pop(); | 242 Comment comment = pop(); |
| 248 push(new ConstructorDeclaration(comment, metadata, name)); | 243 push(new ConstructorDeclaration(comment, metadata, name)); |
| 249 } | 244 } |
| 250 | 245 |
| 251 @override | 246 @override |
| 252 void endFieldInitializer(Token assignment) { | 247 void endFieldInitializer(Token assignment) { |
| 253 debugEvent("FieldInitializer"); | 248 debugEvent("FieldInitializer"); |
| 254 pop(); // Expression | 249 pop(); // Expression |
| 255 } | 250 } |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 302 | 297 |
| 303 @override | 298 @override |
| 304 void endMember() { | 299 void endMember() { |
| 305 debugEvent("Member"); | 300 debugEvent("Member"); |
| 306 } | 301 } |
| 307 | 302 |
| 308 @override | 303 @override |
| 309 void endMetadata(Token beginToken, Token periodBeforeName, Token endToken) { | 304 void endMetadata(Token beginToken, Token periodBeforeName, Token endToken) { |
| 310 debugEvent("Metadata"); | 305 debugEvent("Metadata"); |
| 311 inMetadata = false; | 306 inMetadata = false; |
| 312 // ignore: strong_mode_down_cast_composite | |
| 313 List<Expression> arguments = pop(); | 307 List<Expression> arguments = pop(); |
| 314 String constructorName = popIfNotNull(periodBeforeName); | 308 String constructorName = popIfNotNull(periodBeforeName); |
| 315 pop(); // Type arguments | 309 pop(); // Type arguments |
| 316 String name = pop(); | 310 String name = pop(); |
| 317 push(new Annotation(name, constructorName, arguments)); | 311 push(new Annotation(name, constructorName, arguments)); |
| 318 } | 312 } |
| 319 | 313 |
| 320 @override | 314 @override |
| 321 void endMetadataStar(int count, bool forParameter) { | 315 void endMetadataStar(int count, bool forParameter) { |
| 322 debugEvent("MetadataStar"); | 316 debugEvent("MetadataStar"); |
| 323 push(popList(count) ?? NullValue.Metadata); | 317 push(popList(count) ?? NullValue.Metadata); |
| 324 } | 318 } |
| 325 | 319 |
| 326 void endMethod(Token getOrSet, Token beginToken, Token endToken) { | 320 void endMethod(Token getOrSet, Token beginToken, Token endToken) { |
| 327 debugEvent("Method"); | 321 debugEvent("Method"); |
| 328 pop(); // Body | 322 pop(); // Body |
| 329 pop(); // Initializers | 323 pop(); // Initializers |
| 330 pop(); // Formal parameters | 324 pop(); // Formal parameters |
| 331 pop(); // Type variables | 325 pop(); // Type variables |
| 332 String name = pop(); | 326 String name = pop(); |
| 333 TypeName returnType = pop(); | 327 TypeName returnType = pop(); |
| 334 // ignore: strong_mode_down_cast_composite | |
| 335 List<Annotation> metadata = pop(); | 328 List<Annotation> metadata = pop(); |
| 336 Comment comment = pop(); | 329 Comment comment = pop(); |
| 337 push(new MethodDeclaration( | 330 push(new MethodDeclaration( |
| 338 comment, metadata, getOrSet?.lexeme == 'get', name, returnType)); | 331 comment, metadata, getOrSet?.lexeme == 'get', name, returnType)); |
| 339 } | 332 } |
| 340 | 333 |
| 341 @override | 334 @override |
| 342 void endSend(Token beginToken, Token endToken) { | 335 void endSend(Token beginToken, Token endToken) { |
| 343 debugEvent("Send"); | 336 debugEvent("Send"); |
| 344 // ignore: strong_mode_down_cast_composite | |
| 345 pop(); // Arguments | 337 pop(); // Arguments |
| 346 pop(); // Type arguments | 338 pop(); // Type arguments |
| 347 pop(); // Receiver | 339 pop(); // Receiver |
| 348 push(new UnknownExpression()); | 340 push(new UnknownExpression()); |
| 349 } | 341 } |
| 350 | 342 |
| 351 @override | 343 @override |
| 352 void endShow(Token showKeyword) { | 344 void endShow(Token showKeyword) { |
| 353 debugEvent("Show"); | 345 debugEvent("Show"); |
| 354 pop(); // Shown names | 346 pop(); // Shown names |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 428 void handleQualified(Token period) { | 420 void handleQualified(Token period) { |
| 429 debugEvent("Qualified"); | 421 debugEvent("Qualified"); |
| 430 String suffix = pop(); | 422 String suffix = pop(); |
| 431 String prefix = pop(); | 423 String prefix = pop(); |
| 432 push('$prefix.$suffix'); | 424 push('$prefix.$suffix'); |
| 433 } | 425 } |
| 434 | 426 |
| 435 @override | 427 @override |
| 436 void handleType(Token beginToken, Token endToken) { | 428 void handleType(Token beginToken, Token endToken) { |
| 437 debugEvent("Type"); | 429 debugEvent("Type"); |
| 438 // ignore: strong_mode_down_cast_composite | |
| 439 List<TypeName> typeArguments = pop(); | 430 List<TypeName> typeArguments = pop(); |
| 440 String name = pop(); | 431 String name = pop(); |
| 441 push(new TypeName(name, typeArguments)); | 432 push(new TypeName(name, typeArguments)); |
| 442 } | 433 } |
| 443 } | 434 } |
| 444 | 435 |
| 445 /// Parser intended for use with [MiniAstBuilder]. | 436 /// Parser intended for use with [MiniAstBuilder]. |
| 446 class MiniAstParser extends Parser { | 437 class MiniAstParser extends Parser { |
| 447 MiniAstParser(MiniAstBuilder listener) : super(listener); | 438 MiniAstParser(MiniAstBuilder listener) : super(listener); |
| 448 | 439 |
| (...skipping 23 matching lines...) Expand all Loading... |
| 472 final String name; | 463 final String name; |
| 473 | 464 |
| 474 final List<TypeName> typeArguments; | 465 final List<TypeName> typeArguments; |
| 475 | 466 |
| 476 TypeName(this.name, this.typeArguments); | 467 TypeName(this.name, this.typeArguments); |
| 477 } | 468 } |
| 478 | 469 |
| 479 /// "Mini AST" representation of an expression which summary code generation | 470 /// "Mini AST" representation of an expression which summary code generation |
| 480 /// need not be concerned about. | 471 /// need not be concerned about. |
| 481 class UnknownExpression extends Expression {} | 472 class UnknownExpression extends Expression {} |
| OLD | NEW |