| 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 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 134 | 134 |
| 135 @override | 135 @override |
| 136 void endExport(Token exportKeyword, Token semicolon) { | 136 void endExport(Token exportKeyword, Token semicolon) { |
| 137 debugEvent("Export"); | 137 debugEvent("Export"); |
| 138 List<Combinator> combinators = pop(); | 138 List<Combinator> combinators = pop(); |
| 139 Unhandled conditionalUris = pop(); | 139 Unhandled conditionalUris = pop(); |
| 140 String uri = pop(); | 140 String uri = pop(); |
| 141 List<MetadataBuilder> metadata = pop(); | 141 List<MetadataBuilder> metadata = pop(); |
| 142 library.addExport( | 142 library.addExport( |
| 143 metadata, uri, conditionalUris, combinators, exportKeyword.charOffset); | 143 metadata, uri, conditionalUris, combinators, exportKeyword.charOffset); |
| 144 checkEmpty(); | 144 checkEmpty(exportKeyword.charOffset); |
| 145 } | 145 } |
| 146 | 146 |
| 147 @override | 147 @override |
| 148 void endImport(Token importKeyword, Token deferredKeyword, Token asKeyword, | 148 void endImport(Token importKeyword, Token deferredKeyword, Token asKeyword, |
| 149 Token semicolon) { | 149 Token semicolon) { |
| 150 debugEvent("endImport"); | 150 debugEvent("endImport"); |
| 151 List<Combinator> combinators = pop(); | 151 List<Combinator> combinators = pop(); |
| 152 String prefix = popIfNotNull(asKeyword); | 152 String prefix = popIfNotNull(asKeyword); |
| 153 Unhandled conditionalUris = pop(); | 153 Unhandled conditionalUris = pop(); |
| 154 String uri = pop(); | 154 String uri = pop(); |
| 155 List<MetadataBuilder> metadata = pop(); | 155 List<MetadataBuilder> metadata = pop(); |
| 156 library.addImport(metadata, uri, conditionalUris, prefix, combinators, | 156 library.addImport(metadata, uri, conditionalUris, prefix, combinators, |
| 157 deferredKeyword != null, importKeyword.charOffset, | 157 deferredKeyword != null, importKeyword.charOffset, |
| 158 asKeyword?.next?.charOffset ?? -1); | 158 asKeyword?.next?.charOffset ?? -1); |
| 159 checkEmpty(); | 159 checkEmpty(importKeyword.charOffset); |
| 160 } | 160 } |
| 161 | 161 |
| 162 @override | 162 @override |
| 163 void endPart(Token partKeyword, Token semicolon) { | 163 void endPart(Token partKeyword, Token semicolon) { |
| 164 debugEvent("Part"); | 164 debugEvent("Part"); |
| 165 String uri = pop(); | 165 String uri = pop(); |
| 166 List<MetadataBuilder> metadata = pop(); | 166 List<MetadataBuilder> metadata = pop(); |
| 167 library.addPart(metadata, uri); | 167 library.addPart(metadata, uri); |
| 168 checkEmpty(); | 168 checkEmpty(partKeyword.charOffset); |
| 169 } | 169 } |
| 170 | 170 |
| 171 @override | 171 @override |
| 172 void handleOperatorName(Token operatorKeyword, Token token) { | 172 void handleOperatorName(Token operatorKeyword, Token token) { |
| 173 debugEvent("OperatorName"); | 173 debugEvent("OperatorName"); |
| 174 push(operatorFromString(token.stringValue)); | 174 push(operatorFromString(token.stringValue)); |
| 175 } | 175 } |
| 176 | 176 |
| 177 @override | 177 @override |
| 178 void endIdentifierList(int count) { | 178 void endIdentifierList(int count) { |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 211 List<TypeVariableBuilder> typeVariables = pop(); | 211 List<TypeVariableBuilder> typeVariables = pop(); |
| 212 String name = pop(); | 212 String name = pop(); |
| 213 if (typeVariables != null && supertype is MixinApplicationBuilder) { | 213 if (typeVariables != null && supertype is MixinApplicationBuilder) { |
| 214 supertype.typeVariables = typeVariables; | 214 supertype.typeVariables = typeVariables; |
| 215 supertype.subclassName = name; | 215 supertype.subclassName = name; |
| 216 } | 216 } |
| 217 int modifiers = Modifier.validate(pop()); | 217 int modifiers = Modifier.validate(pop()); |
| 218 List<MetadataBuilder> metadata = pop(); | 218 List<MetadataBuilder> metadata = pop(); |
| 219 library.addClass(metadata, modifiers, name, typeVariables, supertype, | 219 library.addClass(metadata, modifiers, name, typeVariables, supertype, |
| 220 interfaces, beginToken.charOffset); | 220 interfaces, beginToken.charOffset); |
| 221 checkEmpty(); | 221 checkEmpty(beginToken.charOffset); |
| 222 } | 222 } |
| 223 | 223 |
| 224 ProcedureKind computeProcedureKind(Token token) { | 224 ProcedureKind computeProcedureKind(Token token) { |
| 225 if (token == null) return ProcedureKind.Method; | 225 if (token == null) return ProcedureKind.Method; |
| 226 if (optional("get", token)) return ProcedureKind.Getter; | 226 if (optional("get", token)) return ProcedureKind.Getter; |
| 227 if (optional("set", token)) return ProcedureKind.Setter; | 227 if (optional("set", token)) return ProcedureKind.Setter; |
| 228 return internalError("Unhandled: ${token.value}"); | 228 return internalError("Unhandled: ${token.value}"); |
| 229 } | 229 } |
| 230 | 230 |
| 231 @override | 231 @override |
| 232 void beginTopLevelMethod(Token token, Token name) { | 232 void beginTopLevelMethod(Token token, Token name) { |
| 233 library.beginNestedDeclaration(name.value, hasMembers: false); | 233 library.beginNestedDeclaration(name.value, hasMembers: false); |
| 234 } | 234 } |
| 235 | 235 |
| 236 @override | 236 @override |
| 237 void endTopLevelMethod( | 237 void endTopLevelMethod( |
| 238 Token beginToken, Token getOrSet, Token endToken) { | 238 Token beginToken, Token getOrSet, Token endToken) { |
| 239 debugEvent("endTopLevelMethod"); | 239 debugEvent("endTopLevelMethod"); |
| 240 MethodBody kind = pop(); | 240 MethodBody kind = pop(); |
| 241 AsyncMarker asyncModifier = pop(); | 241 AsyncMarker asyncModifier = pop(); |
| 242 List<FormalParameterBuilder> formals = pop(); | 242 List<FormalParameterBuilder> formals = pop(); |
| 243 List<TypeVariableBuilder> typeVariables = pop(); | 243 List<TypeVariableBuilder> typeVariables = pop(); |
| 244 String name = pop(); | 244 String name = pop(); |
| 245 TypeBuilder returnType = pop(); | 245 TypeBuilder returnType = pop(); |
| 246 int modifiers = Modifier.validate(pop(), | 246 int modifiers = Modifier.validate(pop(), |
| 247 isAbstract: kind == MethodBody.Abstract); | 247 isAbstract: kind == MethodBody.Abstract); |
| 248 List<MetadataBuilder> metadata = pop(); | 248 List<MetadataBuilder> metadata = pop(); |
| 249 checkEmpty(); | 249 checkEmpty(beginToken.charOffset); |
| 250 library.addProcedure(metadata, modifiers, returnType, name, | 250 library.addProcedure(metadata, modifiers, returnType, name, |
| 251 typeVariables, formals, asyncModifier, computeProcedureKind(getOrSet), | 251 typeVariables, formals, asyncModifier, computeProcedureKind(getOrSet), |
| 252 beginToken.charOffset, nativeMethodName, isTopLevel: true); | 252 beginToken.charOffset, nativeMethodName, isTopLevel: true); |
| 253 nativeMethodName = null; | 253 nativeMethodName = null; |
| 254 } | 254 } |
| 255 | 255 |
| 256 @override | 256 @override |
| 257 void handleNoFunctionBody(Token token) { | 257 void handleNoFunctionBody(Token token) { |
| 258 debugEvent("NoFunctionBody"); | 258 debugEvent("NoFunctionBody"); |
| 259 push(MethodBody.Abstract); | 259 push(MethodBody.Abstract); |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 327 String name = pop(); | 327 String name = pop(); |
| 328 if (typeVariables != null && mixinApplication is MixinApplicationBuilder) { | 328 if (typeVariables != null && mixinApplication is MixinApplicationBuilder) { |
| 329 mixinApplication.typeVariables = typeVariables; | 329 mixinApplication.typeVariables = typeVariables; |
| 330 mixinApplication.subclassName = name; | 330 mixinApplication.subclassName = name; |
| 331 } | 331 } |
| 332 int modifiers = Modifier.validate(pop()); | 332 int modifiers = Modifier.validate(pop()); |
| 333 List<MetadataBuilder> metadata = pop(); | 333 List<MetadataBuilder> metadata = pop(); |
| 334 library.addNamedMixinApplication( | 334 library.addNamedMixinApplication( |
| 335 metadata, name, typeVariables, modifiers, mixinApplication, interfaces, | 335 metadata, name, typeVariables, modifiers, mixinApplication, interfaces, |
| 336 classKeyword.charOffset); | 336 classKeyword.charOffset); |
| 337 checkEmpty(); | 337 checkEmpty(classKeyword.charOffset); |
| 338 } | 338 } |
| 339 | 339 |
| 340 @override | 340 @override |
| 341 void endTypeArguments(int count, Token beginToken, Token endToken) { | 341 void endTypeArguments(int count, Token beginToken, Token endToken) { |
| 342 debugEvent("TypeArguments"); | 342 debugEvent("TypeArguments"); |
| 343 push(popList(count) ?? NullValue.TypeArguments); | 343 push(popList(count) ?? NullValue.TypeArguments); |
| 344 } | 344 } |
| 345 | 345 |
| 346 @override | 346 @override |
| 347 void endType(Token beginToken, Token endToken) { | 347 void endType(Token beginToken, Token endToken) { |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 441 } | 441 } |
| 442 push(formals ?? NullValue.FormalParameters); | 442 push(formals ?? NullValue.FormalParameters); |
| 443 } | 443 } |
| 444 | 444 |
| 445 @override | 445 @override |
| 446 void endEnum(Token enumKeyword, Token endBrace, int count) { | 446 void endEnum(Token enumKeyword, Token endBrace, int count) { |
| 447 List<String> constants = popList(count); | 447 List<String> constants = popList(count); |
| 448 String name = pop(); | 448 String name = pop(); |
| 449 List<MetadataBuilder> metadata = pop(); | 449 List<MetadataBuilder> metadata = pop(); |
| 450 library.addEnum(metadata, name, constants, enumKeyword.charOffset); | 450 library.addEnum(metadata, name, constants, enumKeyword.charOffset); |
| 451 checkEmpty(); | 451 checkEmpty(enumKeyword.charOffset); |
| 452 } | 452 } |
| 453 | 453 |
| 454 @override | 454 @override |
| 455 void beginFunctionTypeAlias(Token token) { | 455 void beginFunctionTypeAlias(Token token) { |
| 456 library.beginNestedDeclaration(null, hasMembers: false); | 456 library.beginNestedDeclaration(null, hasMembers: false); |
| 457 } | 457 } |
| 458 | 458 |
| 459 @override | 459 @override |
| 460 void endFunctionTypeAlias(Token typedefKeyword, Token endToken) { | 460 void endFunctionTypeAlias(Token typedefKeyword, Token endToken) { |
| 461 debugEvent("endFunctionTypeAlias"); | 461 debugEvent("endFunctionTypeAlias"); |
| 462 List<FormalParameterBuilder> formals = pop(); | 462 List<FormalParameterBuilder> formals = pop(); |
| 463 List<TypeVariableBuilder> typeVariables = pop(); | 463 List<TypeVariableBuilder> typeVariables = pop(); |
| 464 String name = pop(); | 464 String name = pop(); |
| 465 TypeBuilder returnType = pop(); | 465 TypeBuilder returnType = pop(); |
| 466 List<MetadataBuilder> metadata = pop(); | 466 List<MetadataBuilder> metadata = pop(); |
| 467 library.addFunctionTypeAlias( | 467 library.addFunctionTypeAlias( |
| 468 metadata, returnType, name, typeVariables, formals, | 468 metadata, returnType, name, typeVariables, formals, |
| 469 typedefKeyword.charOffset); | 469 typedefKeyword.charOffset); |
| 470 checkEmpty(); | 470 checkEmpty(typedefKeyword.charOffset); |
| 471 } | 471 } |
| 472 | 472 |
| 473 @override | 473 @override |
| 474 void endTopLevelFields(int count, Token beginToken, Token endToken) { | 474 void endTopLevelFields(int count, Token beginToken, Token endToken) { |
| 475 debugEvent("endTopLevelFields"); | 475 debugEvent("endTopLevelFields"); |
| 476 List<String> names = popList(count); | 476 List<String> names = popList(count); |
| 477 TypeBuilder type = pop(); | 477 TypeBuilder type = pop(); |
| 478 int modifiers = Modifier.validate(pop()); | 478 int modifiers = Modifier.validate(pop()); |
| 479 List<MetadataBuilder> metadata = pop(); | 479 List<MetadataBuilder> metadata = pop(); |
| 480 library.addFields(metadata, modifiers, type, names); | 480 library.addFields(metadata, modifiers, type, names); |
| 481 checkEmpty(); | 481 checkEmpty(beginToken.charOffset); |
| 482 } | 482 } |
| 483 | 483 |
| 484 @override | 484 @override |
| 485 void endFields(int count, Token beginToken, Token endToken) { | 485 void endFields(int count, Token beginToken, Token endToken) { |
| 486 debugEvent("Fields"); | 486 debugEvent("Fields"); |
| 487 List<String> names = popList(count); | 487 List<String> names = popList(count); |
| 488 TypeBuilder type = pop(); | 488 TypeBuilder type = pop(); |
| 489 int modifiers = Modifier.validate(pop()); | 489 int modifiers = Modifier.validate(pop()); |
| 490 List<MetadataBuilder> metadata = pop(); | 490 List<MetadataBuilder> metadata = pop(); |
| 491 library.addFields(metadata, modifiers, type, names); | 491 library.addFields(metadata, modifiers, type, names); |
| (...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 614 Link<Token> handleMemberName(Link<Token> identifiers) { | 614 Link<Token> handleMemberName(Link<Token> identifiers) { |
| 615 if (!isDartLibrary || identifiers.isEmpty) return identifiers; | 615 if (!isDartLibrary || identifiers.isEmpty) return identifiers; |
| 616 return removeNativeClause(identifiers); | 616 return removeNativeClause(identifiers); |
| 617 } | 617 } |
| 618 | 618 |
| 619 @override | 619 @override |
| 620 void debugEvent(String name) { | 620 void debugEvent(String name) { |
| 621 // printEvent(name); | 621 // printEvent(name); |
| 622 } | 622 } |
| 623 } | 623 } |
| OLD | NEW |