| OLD | NEW |
| 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2016, 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 library fasta.outline_builder; | 5 library fasta.outline_builder; |
| 6 | 6 |
| 7 import 'package:kernel/ast.dart' show | 7 import 'package:kernel/ast.dart' show |
| 8 AsyncMarker, | 8 AsyncMarker, |
| 9 ProcedureKind; | 9 ProcedureKind; |
| 10 | 10 |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 88 Uri get uri => library.uri; | 88 Uri get uri => library.uri; |
| 89 | 89 |
| 90 @override | 90 @override |
| 91 void endMetadata(Token beginToken, Token periodBeforeName, Token endToken) { | 91 void endMetadata(Token beginToken, Token periodBeforeName, Token endToken) { |
| 92 debugEvent("Metadata"); | 92 debugEvent("Metadata"); |
| 93 List arguments = pop(); | 93 List arguments = pop(); |
| 94 String postfix = popIfNotNull(periodBeforeName); | 94 String postfix = popIfNotNull(periodBeforeName); |
| 95 List<TypeBuilder> typeArguments = pop(); | 95 List<TypeBuilder> typeArguments = pop(); |
| 96 if (arguments == null) { | 96 if (arguments == null) { |
| 97 String expression = pop(); | 97 String expression = pop(); |
| 98 push(new MetadataBuilder.fromExpression(expression, postfix)); | 98 push(new MetadataBuilder.fromExpression(expression, postfix, library, |
| 99 beginToken.charOffset)); |
| 99 } else { | 100 } else { |
| 100 String typeName = pop(); | 101 String typeName = pop(); |
| 101 push(new MetadataBuilder.fromConstructor( | 102 push(new MetadataBuilder.fromConstructor( |
| 102 library.addConstructorReference( | 103 library.addConstructorReference( |
| 103 typeName, typeArguments, postfix), arguments)); | 104 typeName, typeArguments, postfix, |
| 105 beginToken.next.charOffset), |
| 106 arguments, library, beginToken.charOffset)); |
| 104 } | 107 } |
| 105 } | 108 } |
| 106 | 109 |
| 107 @override | 110 @override |
| 108 void endHide(Token hideKeyword) { | 111 void endHide(Token hideKeyword) { |
| 109 debugEvent("Hide"); | 112 debugEvent("Hide"); |
| 110 List<String> names = pop(); | 113 List<String> names = pop(); |
| 111 push(new Combinator.hide(names)); | 114 push(new Combinator.hide(names, hideKeyword.charOffset, library.fileUri)); |
| 112 } | 115 } |
| 113 | 116 |
| 114 @override | 117 @override |
| 115 void endShow(Token showKeyword) { | 118 void endShow(Token showKeyword) { |
| 116 debugEvent("Show"); | 119 debugEvent("Show"); |
| 117 List<String> names = pop(); | 120 List<String> names = pop(); |
| 118 push(new Combinator.show(names)); | 121 push(new Combinator.show(names, showKeyword.charOffset, library.fileUri)); |
| 119 } | 122 } |
| 120 | 123 |
| 121 @override | 124 @override |
| 122 void endCombinators(int count) { | 125 void endCombinators(int count) { |
| 123 debugEvent("Combinators"); | 126 debugEvent("Combinators"); |
| 124 push(popList(count) ?? NullValue.Combinators); | 127 push(popList(count) ?? NullValue.Combinators); |
| 125 } | 128 } |
| 126 | 129 |
| 127 @override | 130 @override |
| 128 void endExport(Token exportKeyword, Token semicolon) { | 131 void endExport(Token exportKeyword, Token semicolon) { |
| 129 debugEvent("Export"); | 132 debugEvent("Export"); |
| 130 List<Combinator> combinators = pop(); | 133 List<Combinator> combinators = pop(); |
| 131 Unhandled conditionalUris = pop(); | 134 Unhandled conditionalUris = pop(); |
| 132 String uri = pop(); | 135 String uri = pop(); |
| 133 List<MetadataBuilder> metadata = pop(); | 136 List<MetadataBuilder> metadata = pop(); |
| 134 library.addExport(metadata, uri, conditionalUris, combinators); | 137 library.addExport( |
| 138 metadata, uri, conditionalUris, combinators, exportKeyword.charOffset); |
| 135 checkEmpty(); | 139 checkEmpty(); |
| 136 } | 140 } |
| 137 | 141 |
| 138 @override | 142 @override |
| 139 void endImport(Token importKeyword, Token deferredKeyword, Token asKeyword, | 143 void endImport(Token importKeyword, Token deferredKeyword, Token asKeyword, |
| 140 Token semicolon) { | 144 Token semicolon) { |
| 141 debugEvent("endImport"); | 145 debugEvent("endImport"); |
| 142 List<Combinator> combinators = pop(); | 146 List<Combinator> combinators = pop(); |
| 143 String prefix = popIfNotNull(asKeyword); | 147 String prefix = popIfNotNull(asKeyword); |
| 144 Unhandled conditionalUris = pop(); | 148 Unhandled conditionalUris = pop(); |
| 145 String uri = pop(); | 149 String uri = pop(); |
| 146 List<MetadataBuilder> metadata = pop(); | 150 List<MetadataBuilder> metadata = pop(); |
| 147 library.addImport(metadata, uri, conditionalUris, prefix, combinators, | 151 library.addImport(metadata, uri, conditionalUris, prefix, combinators, |
| 148 deferredKeyword != null); | 152 deferredKeyword != null, importKeyword.charOffset, |
| 153 asKeyword?.next?.charOffset ?? -1); |
| 149 checkEmpty(); | 154 checkEmpty(); |
| 150 } | 155 } |
| 151 | 156 |
| 152 @override | 157 @override |
| 153 void endPart(Token partKeyword, Token semicolon) { | 158 void endPart(Token partKeyword, Token semicolon) { |
| 154 debugEvent("Part"); | 159 debugEvent("Part"); |
| 155 String uri = pop(); | 160 String uri = pop(); |
| 156 List<MetadataBuilder> metadata = pop(); | 161 List<MetadataBuilder> metadata = pop(); |
| 157 library.addPart(metadata, uri); | 162 library.addPart(metadata, uri); |
| 158 checkEmpty(); | 163 checkEmpty(); |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 195 @override | 200 @override |
| 196 void endClassDeclaration(int interfacesCount, Token beginToken, | 201 void endClassDeclaration(int interfacesCount, Token beginToken, |
| 197 Token extendsKeyword, Token implementsKeyword, Token endToken) { | 202 Token extendsKeyword, Token implementsKeyword, Token endToken) { |
| 198 debugEvent("endClassDeclaration"); | 203 debugEvent("endClassDeclaration"); |
| 199 List<TypeBuilder> interfaces = popList(interfacesCount); | 204 List<TypeBuilder> interfaces = popList(interfacesCount); |
| 200 TypeBuilder supertype = pop(); | 205 TypeBuilder supertype = pop(); |
| 201 List<TypeVariableBuilder> typeVariables = pop(); | 206 List<TypeVariableBuilder> typeVariables = pop(); |
| 202 String name = pop(); | 207 String name = pop(); |
| 203 int modifiers = Modifier.validate(pop()); | 208 int modifiers = Modifier.validate(pop()); |
| 204 List<MetadataBuilder> metadata = pop(); | 209 List<MetadataBuilder> metadata = pop(); |
| 205 library.addClass( | 210 library.addClass(metadata, modifiers, name, typeVariables, supertype, |
| 206 metadata, modifiers, name, typeVariables, supertype, interfaces); | 211 interfaces, beginToken.charOffset); |
| 207 checkEmpty(); | 212 checkEmpty(); |
| 208 } | 213 } |
| 209 | 214 |
| 210 ProcedureKind computeProcedureKind(Token token) { | 215 ProcedureKind computeProcedureKind(Token token) { |
| 211 if (token == null) return ProcedureKind.Method; | 216 if (token == null) return ProcedureKind.Method; |
| 212 if (optional("get", token)) return ProcedureKind.Getter; | 217 if (optional("get", token)) return ProcedureKind.Getter; |
| 213 if (optional("set", token)) return ProcedureKind.Setter; | 218 if (optional("set", token)) return ProcedureKind.Setter; |
| 214 return internalError("Unhandled: ${token.value}"); | 219 return internalError("Unhandled: ${token.value}"); |
| 215 } | 220 } |
| 216 | 221 |
| (...skipping 10 matching lines...) Expand all Loading... |
| 227 AsyncMarker asyncModifier = pop(); | 232 AsyncMarker asyncModifier = pop(); |
| 228 List<FormalParameterBuilder> formals = pop(); | 233 List<FormalParameterBuilder> formals = pop(); |
| 229 List<TypeVariableBuilder> typeVariables = pop(); | 234 List<TypeVariableBuilder> typeVariables = pop(); |
| 230 String name = pop(); | 235 String name = pop(); |
| 231 TypeBuilder returnType = pop(); | 236 TypeBuilder returnType = pop(); |
| 232 int modifiers = Modifier.validate(pop(), | 237 int modifiers = Modifier.validate(pop(), |
| 233 isAbstract: kind == MethodBody.Abstract); | 238 isAbstract: kind == MethodBody.Abstract); |
| 234 List<MetadataBuilder> metadata = pop(); | 239 List<MetadataBuilder> metadata = pop(); |
| 235 checkEmpty(); | 240 checkEmpty(); |
| 236 return library.addProcedure(metadata, modifiers, returnType, name, | 241 return library.addProcedure(metadata, modifiers, returnType, name, |
| 237 typeVariables, formals, asyncModifier, computeProcedureKind(getOrSet)); | 242 typeVariables, formals, asyncModifier, computeProcedureKind(getOrSet), |
| 243 beginToken.charOffset); |
| 238 } | 244 } |
| 239 | 245 |
| 240 @override | 246 @override |
| 241 void handleNoFunctionBody(Token token) { | 247 void handleNoFunctionBody(Token token) { |
| 242 debugEvent("NoFunctionBody"); | 248 debugEvent("NoFunctionBody"); |
| 243 push(MethodBody.Abstract); | 249 push(MethodBody.Abstract); |
| 244 } | 250 } |
| 245 | 251 |
| 246 @override | 252 @override |
| 247 void handleFunctionBodySkipped(Token token) { | 253 void handleFunctionBodySkipped(Token token) { |
| (...skipping 28 matching lines...) Expand all Loading... |
| 276 kind = ProcedureKind.Operator; | 282 kind = ProcedureKind.Operator; |
| 277 } else { | 283 } else { |
| 278 name = nameOrOperator; | 284 name = nameOrOperator; |
| 279 kind = computeProcedureKind(getOrSet); | 285 kind = computeProcedureKind(getOrSet); |
| 280 } | 286 } |
| 281 TypeBuilder returnType = pop(); | 287 TypeBuilder returnType = pop(); |
| 282 int modifiers = Modifier.validate(pop(), | 288 int modifiers = Modifier.validate(pop(), |
| 283 isAbstract: bodyKind == MethodBody.Abstract); | 289 isAbstract: bodyKind == MethodBody.Abstract); |
| 284 List<MetadataBuilder> metadata = pop(); | 290 List<MetadataBuilder> metadata = pop(); |
| 285 library.addProcedure(metadata, modifiers, returnType, name, typeVariables, | 291 library.addProcedure(metadata, modifiers, returnType, name, typeVariables, |
| 286 formals, asyncModifier, kind); | 292 formals, asyncModifier, kind, beginToken.charOffset); |
| 287 } | 293 } |
| 288 | 294 |
| 289 @override | 295 @override |
| 290 void endMixinApplication() { | 296 void endMixinApplication() { |
| 291 debugEvent("MixinApplication"); | 297 debugEvent("MixinApplication"); |
| 292 List<TypeBuilder> mixins = pop(); | 298 List<TypeBuilder> mixins = pop(); |
| 293 TypeBuilder supertype = pop(); | 299 TypeBuilder supertype = pop(); |
| 294 push(library.addMixinApplication(supertype, mixins)); | 300 push(library.addMixinApplication(supertype, mixins, -1)); |
| 295 } | 301 } |
| 296 | 302 |
| 297 @override | 303 @override |
| 298 void beginNamedMixinApplication(Token token) { | 304 void beginNamedMixinApplication(Token token) { |
| 299 library.beginNestedDeclaration(hasMembers: false); | 305 library.beginNestedDeclaration(hasMembers: false); |
| 300 } | 306 } |
| 301 | 307 |
| 302 @override | 308 @override |
| 303 void endNamedMixinApplication( | 309 void endNamedMixinApplication( |
| 304 Token classKeyword, Token implementsKeyword, Token endToken) { | 310 Token classKeyword, Token implementsKeyword, Token endToken) { |
| 305 debugEvent("endNamedMixinApplication"); | 311 debugEvent("endNamedMixinApplication"); |
| 306 List<TypeBuilder> interfaces = popIfNotNull(implementsKeyword); | 312 List<TypeBuilder> interfaces = popIfNotNull(implementsKeyword); |
| 307 TypeBuilder mixinApplication = pop(); | 313 TypeBuilder mixinApplication = pop(); |
| 308 List<TypeVariableBuilder> typeVariables = pop(); | 314 List<TypeVariableBuilder> typeVariables = pop(); |
| 309 String name = pop(); | 315 String name = pop(); |
| 310 int modifiers = Modifier.validate(pop()); | 316 int modifiers = Modifier.validate(pop()); |
| 311 List<MetadataBuilder> metadata = pop(); | 317 List<MetadataBuilder> metadata = pop(); |
| 312 library.addNamedMixinApplication( | 318 library.addNamedMixinApplication( |
| 313 metadata, name, typeVariables, modifiers, mixinApplication, interfaces); | 319 metadata, name, typeVariables, modifiers, mixinApplication, interfaces, |
| 320 classKeyword.charOffset); |
| 314 checkEmpty(); | 321 checkEmpty(); |
| 315 } | 322 } |
| 316 | 323 |
| 317 @override | 324 @override |
| 318 void endTypeArguments(int count, Token beginToken, Token endToken) { | 325 void endTypeArguments(int count, Token beginToken, Token endToken) { |
| 319 debugEvent("TypeArguments"); | 326 debugEvent("TypeArguments"); |
| 320 push(popList(count) ?? NullValue.TypeArguments); | 327 push(popList(count) ?? NullValue.TypeArguments); |
| 321 } | 328 } |
| 322 | 329 |
| 323 @override | 330 @override |
| 324 void endType(Token beginToken, Token endToken) { | 331 void endType(Token beginToken, Token endToken) { |
| 325 debugEvent("Type"); | 332 debugEvent("Type"); |
| 326 List<TypeBuilder> arguments = pop(); | 333 List<TypeBuilder> arguments = pop(); |
| 327 String name = pop(); | 334 String name = pop(); |
| 328 push(library.addNamedType(name, arguments)); | 335 push(library.addNamedType(name, arguments, beginToken.charOffset)); |
| 329 } | 336 } |
| 330 | 337 |
| 331 @override | 338 @override |
| 332 void endTypeList(int count) { | 339 void endTypeList(int count) { |
| 333 debugEvent("TypeList"); | 340 debugEvent("TypeList"); |
| 334 push(popList(count) ?? NullValue.TypeList); | 341 push(popList(count) ?? NullValue.TypeList); |
| 335 } | 342 } |
| 336 | 343 |
| 337 @override | 344 @override |
| 338 void endTypeVariables(int count, Token beginToken, Token endToken) { | 345 void endTypeVariables(int count, Token beginToken, Token endToken) { |
| 339 debugEvent("TypeVariables"); | 346 debugEvent("TypeVariables"); |
| 340 push(popList(count) ?? NullValue.TypeVariables); | 347 push(popList(count) ?? NullValue.TypeVariables); |
| 341 } | 348 } |
| 342 | 349 |
| 343 @override | 350 @override |
| 344 void handleVoidKeyword(Token token) { | 351 void handleVoidKeyword(Token token) { |
| 345 debugEvent("VoidKeyword"); | 352 debugEvent("VoidKeyword"); |
| 346 push(library.addVoidType()); | 353 push(library.addVoidType(token.charOffset)); |
| 347 } | 354 } |
| 348 | 355 |
| 349 @override | 356 @override |
| 350 void endFormalParameter(Token thisKeyword) { | 357 void endFormalParameter(Token thisKeyword) { |
| 351 debugEvent("FormalParameter"); | 358 debugEvent("FormalParameter"); |
| 352 String name = pop(); | 359 String name = pop(); |
| 353 TypeBuilder type = pop(); | 360 TypeBuilder type = pop(); |
| 354 int modifiers = Modifier.validate(pop()); | 361 int modifiers = Modifier.validate(pop()); |
| 355 List<MetadataBuilder> metadata = pop(); | 362 List<MetadataBuilder> metadata = pop(); |
| 363 // TODO(ahe): Needs begin token. |
| 356 push(library.addFormalParameter(metadata, modifiers, type, name, | 364 push(library.addFormalParameter(metadata, modifiers, type, name, |
| 357 thisKeyword != null)); | 365 thisKeyword != null, thisKeyword?.charOffset ?? -1)); |
| 358 } | 366 } |
| 359 | 367 |
| 360 @override | 368 @override |
| 361 void handleValuedFormalParameter(Token equals, Token token) { | 369 void handleValuedFormalParameter(Token equals, Token token) { |
| 362 debugEvent("ValuedFormalParameter"); | 370 debugEvent("ValuedFormalParameter"); |
| 363 // Ignored for now. | 371 // Ignored for now. |
| 364 } | 372 } |
| 365 | 373 |
| 366 @override | 374 @override |
| 367 void endFunctionTypedFormalParameter(Token token) { | 375 void endFunctionTypedFormalParameter(Token token) { |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 413 formals = new List<FormalParameterBuilder>.from(formals); | 421 formals = new List<FormalParameterBuilder>.from(formals); |
| 414 } | 422 } |
| 415 push(formals ?? NullValue.FormalParameters); | 423 push(formals ?? NullValue.FormalParameters); |
| 416 } | 424 } |
| 417 | 425 |
| 418 @override | 426 @override |
| 419 void endEnum(Token enumKeyword, Token endBrace, int count) { | 427 void endEnum(Token enumKeyword, Token endBrace, int count) { |
| 420 List<String> constants = popList(count); | 428 List<String> constants = popList(count); |
| 421 String name = pop(); | 429 String name = pop(); |
| 422 List<MetadataBuilder> metadata = pop(); | 430 List<MetadataBuilder> metadata = pop(); |
| 423 library.addEnum(metadata, name, constants); | 431 library.addEnum(metadata, name, constants, enumKeyword.charOffset); |
| 424 checkEmpty(); | 432 checkEmpty(); |
| 425 } | 433 } |
| 426 | 434 |
| 427 @override | 435 @override |
| 428 void beginFunctionTypeAlias(Token token) { | 436 void beginFunctionTypeAlias(Token token) { |
| 429 library.beginNestedDeclaration(hasMembers: false); | 437 library.beginNestedDeclaration(hasMembers: false); |
| 430 } | 438 } |
| 431 | 439 |
| 432 @override | 440 @override |
| 433 void endFunctionTypeAlias(Token typedefKeyword, Token endToken) { | 441 void endFunctionTypeAlias(Token typedefKeyword, Token endToken) { |
| 434 debugEvent("endFunctionTypeAlias"); | 442 debugEvent("endFunctionTypeAlias"); |
| 435 List<FormalParameterBuilder> formals = pop(); | 443 List<FormalParameterBuilder> formals = pop(); |
| 436 List<TypeVariableBuilder> typeVariables = pop(); | 444 List<TypeVariableBuilder> typeVariables = pop(); |
| 437 String name = pop(); | 445 String name = pop(); |
| 438 TypeBuilder returnType = pop(); | 446 TypeBuilder returnType = pop(); |
| 439 List<MetadataBuilder> metadata = pop(); | 447 List<MetadataBuilder> metadata = pop(); |
| 440 library.addFunctionTypeAlias( | 448 library.addFunctionTypeAlias( |
| 441 metadata, returnType, name, typeVariables, formals); | 449 metadata, returnType, name, typeVariables, formals, |
| 450 typedefKeyword.charOffset); |
| 442 checkEmpty(); | 451 checkEmpty(); |
| 443 } | 452 } |
| 444 | 453 |
| 445 @override | 454 @override |
| 446 void endTopLevelFields(int count, Token beginToken, Token endToken) { | 455 void endTopLevelFields(int count, Token beginToken, Token endToken) { |
| 447 debugEvent("endTopLevelFields"); | 456 debugEvent("endTopLevelFields"); |
| 448 List<String> names = popList(count); | 457 List<String> names = popList(count); |
| 449 TypeBuilder type = pop(); | 458 TypeBuilder type = pop(); |
| 450 int modifiers = Modifier.validate(pop()); | 459 int modifiers = Modifier.validate(pop()); |
| 451 List<MetadataBuilder> metadata = pop(); | 460 List<MetadataBuilder> metadata = pop(); |
| 452 library.addFields(metadata, modifiers, type, names); | 461 library.addFields(metadata, modifiers, type, names); |
| 453 checkEmpty(); | 462 checkEmpty(); |
| 454 } | 463 } |
| 455 | 464 |
| 456 @override | 465 @override |
| 457 void endFields(int count, Token beginToken, Token endToken) { | 466 void endFields(int count, Token beginToken, Token endToken) { |
| 458 debugEvent("Fields"); | 467 debugEvent("Fields"); |
| 459 List<String> names = popList(count); | 468 List<String> names = popList(count); |
| 460 TypeBuilder type = pop(); | 469 TypeBuilder type = pop(); |
| 461 int modifiers = Modifier.validate(pop()); | 470 int modifiers = Modifier.validate(pop()); |
| 462 List<MetadataBuilder> metadata = pop(); | 471 List<MetadataBuilder> metadata = pop(); |
| 463 library.addFields(metadata, modifiers, type, names); | 472 library.addFields(metadata, modifiers, type, names); |
| 464 } | 473 } |
| 465 | 474 |
| 466 @override | 475 @override |
| 467 void endTypeVariable(Token token, Token extendsOrSuper) { | 476 void endTypeVariable(Token token, Token extendsOrSuper) { |
| 468 debugEvent("endTypeVariable"); | 477 debugEvent("endTypeVariable"); |
| 469 TypeBuilder bound = pop(); | 478 TypeBuilder bound = pop(); |
| 470 String name = pop(); | 479 String name = pop(); |
| 471 push(library.addTypeVariable(name, bound)); | 480 push(library.addTypeVariable(name, bound, token.charOffset)); |
| 472 } | 481 } |
| 473 | 482 |
| 474 @override | 483 @override |
| 475 void endPartOf(Token partKeyword, Token semicolon) { | 484 void endPartOf(Token partKeyword, Token semicolon) { |
| 476 debugEvent("endPartOf"); | 485 debugEvent("endPartOf"); |
| 477 String name = pop(); | 486 String name = pop(); |
| 478 List<MetadataBuilder> metadata = pop(); | 487 List<MetadataBuilder> metadata = pop(); |
| 479 library.addPartOf(metadata, name); | 488 library.addPartOf(metadata, name); |
| 480 } | 489 } |
| 481 | 490 |
| 482 @override | 491 @override |
| 483 void endConstructorReference( | 492 void endConstructorReference( |
| 484 Token start, Token periodBeforeName, Token endToken) { | 493 Token start, Token periodBeforeName, Token endToken) { |
| 485 debugEvent("ConstructorReference"); | 494 debugEvent("ConstructorReference"); |
| 486 String suffix = popIfNotNull(periodBeforeName); | 495 String suffix = popIfNotNull(periodBeforeName); |
| 487 List<TypeBuilder> typeArguments = pop(); | 496 List<TypeBuilder> typeArguments = pop(); |
| 488 String name = pop(); | 497 String name = pop(); |
| 489 push(library.addConstructorReference(name, typeArguments, suffix)); | 498 push(library.addConstructorReference( |
| 499 name, typeArguments, suffix, start.charOffset)); |
| 490 } | 500 } |
| 491 | 501 |
| 492 @override | 502 @override |
| 493 void endFactoryMethod(Token beginToken, Token endToken) { | 503 void endFactoryMethod(Token beginToken, Token endToken) { |
| 494 debugEvent("FactoryMethod"); | 504 debugEvent("FactoryMethod"); |
| 495 MethodBody kind = pop(); | 505 MethodBody kind = pop(); |
| 496 ConstructorReferenceBuilder redirectionTarget; | 506 ConstructorReferenceBuilder redirectionTarget; |
| 497 if (kind == MethodBody.RedirectingFactoryBody) { | 507 if (kind == MethodBody.RedirectingFactoryBody) { |
| 498 redirectionTarget = pop(); | 508 redirectionTarget = pop(); |
| 499 } | 509 } |
| 500 AsyncMarker asyncModifier = pop(); | 510 AsyncMarker asyncModifier = pop(); |
| 501 List<FormalParameterBuilder> formals = pop(); | 511 List<FormalParameterBuilder> formals = pop(); |
| 502 var name = pop(); | 512 var name = pop(); |
| 503 List<MetadataBuilder> metadata = pop(); | 513 List<MetadataBuilder> metadata = pop(); |
| 504 library.addFactoryMethod(metadata, name, formals, asyncModifier, | 514 library.addFactoryMethod(metadata, name, formals, asyncModifier, |
| 505 redirectionTarget); | 515 redirectionTarget, beginToken.charOffset); |
| 506 } | 516 } |
| 507 | 517 |
| 508 @override | 518 @override |
| 509 void endRedirectingFactoryBody(Token beginToken, Token endToken) { | 519 void endRedirectingFactoryBody(Token beginToken, Token endToken) { |
| 510 debugEvent("RedirectingFactoryBody"); | 520 debugEvent("RedirectingFactoryBody"); |
| 511 push(MethodBody.RedirectingFactoryBody); | 521 push(MethodBody.RedirectingFactoryBody); |
| 512 } | 522 } |
| 513 | 523 |
| 514 @override | 524 @override |
| 515 void endFieldInitializer(Token assignmentOperator) { | 525 void endFieldInitializer(Token assignmentOperator) { |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 575 Link<Token> handleMemberName(Link<Token> identifiers) { | 585 Link<Token> handleMemberName(Link<Token> identifiers) { |
| 576 if (!isDartLibrary || identifiers.isEmpty) return identifiers; | 586 if (!isDartLibrary || identifiers.isEmpty) return identifiers; |
| 577 return removeNativeClause(identifiers); | 587 return removeNativeClause(identifiers); |
| 578 } | 588 } |
| 579 | 589 |
| 580 @override | 590 @override |
| 581 void debugEvent(String name) { | 591 void debugEvent(String name) { |
| 582 // printEvent(name); | 592 // printEvent(name); |
| 583 } | 593 } |
| 584 } | 594 } |
| OLD | NEW |