| 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 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 187 void endLibraryName(Token libraryKeyword, Token semicolon) { | 187 void endLibraryName(Token libraryKeyword, Token semicolon) { |
| 188 debugEvent("endLibraryName"); | 188 debugEvent("endLibraryName"); |
| 189 String name = pop(); | 189 String name = pop(); |
| 190 List<MetadataBuilder> metadata = pop(); | 190 List<MetadataBuilder> metadata = pop(); |
| 191 library.name = name; | 191 library.name = name; |
| 192 library.metadata = metadata; | 192 library.metadata = metadata; |
| 193 } | 193 } |
| 194 | 194 |
| 195 @override | 195 @override |
| 196 void beginClassDeclaration(Token begin, Token name) { | 196 void beginClassDeclaration(Token begin, Token name) { |
| 197 library.beginNestedDeclaration(); | 197 library.beginNestedDeclaration(name.value); |
| 198 } | 198 } |
| 199 | 199 |
| 200 @override | 200 @override |
| 201 void endClassDeclaration(int interfacesCount, Token beginToken, | 201 void endClassDeclaration(int interfacesCount, Token beginToken, |
| 202 Token extendsKeyword, Token implementsKeyword, Token endToken) { | 202 Token extendsKeyword, Token implementsKeyword, Token endToken) { |
| 203 debugEvent("endClassDeclaration"); | 203 debugEvent("endClassDeclaration"); |
| 204 List<TypeBuilder> interfaces = popList(interfacesCount); | 204 List<TypeBuilder> interfaces = popList(interfacesCount); |
| 205 TypeBuilder supertype = pop(); | 205 TypeBuilder supertype = pop(); |
| 206 List<TypeVariableBuilder> typeVariables = pop(); | 206 List<TypeVariableBuilder> typeVariables = pop(); |
| 207 String name = pop(); | 207 String name = pop(); |
| 208 int modifiers = Modifier.validate(pop()); | 208 int modifiers = Modifier.validate(pop()); |
| 209 List<MetadataBuilder> metadata = pop(); | 209 List<MetadataBuilder> metadata = pop(); |
| 210 library.addClass(metadata, modifiers, name, typeVariables, supertype, | 210 library.addClass(metadata, modifiers, name, typeVariables, supertype, |
| 211 interfaces, beginToken.charOffset); | 211 interfaces, beginToken.charOffset); |
| 212 checkEmpty(); | 212 checkEmpty(); |
| 213 } | 213 } |
| 214 | 214 |
| 215 ProcedureKind computeProcedureKind(Token token) { | 215 ProcedureKind computeProcedureKind(Token token) { |
| 216 if (token == null) return ProcedureKind.Method; | 216 if (token == null) return ProcedureKind.Method; |
| 217 if (optional("get", token)) return ProcedureKind.Getter; | 217 if (optional("get", token)) return ProcedureKind.Getter; |
| 218 if (optional("set", token)) return ProcedureKind.Setter; | 218 if (optional("set", token)) return ProcedureKind.Setter; |
| 219 return internalError("Unhandled: ${token.value}"); | 219 return internalError("Unhandled: ${token.value}"); |
| 220 } | 220 } |
| 221 | 221 |
| 222 @override | 222 @override |
| 223 void beginTopLevelMethod(Token token, Token name) { | 223 void beginTopLevelMethod(Token token, Token name) { |
| 224 library.beginNestedDeclaration(hasMembers: false); | 224 library.beginNestedDeclaration(name.value, hasMembers: false); |
| 225 } | 225 } |
| 226 | 226 |
| 227 @override | 227 @override |
| 228 void endTopLevelMethod( | 228 void endTopLevelMethod( |
| 229 Token beginToken, Token getOrSet, Token endToken) { | 229 Token beginToken, Token getOrSet, Token endToken) { |
| 230 debugEvent("endTopLevelMethod"); | 230 debugEvent("endTopLevelMethod"); |
| 231 MethodBody kind = pop(); | 231 MethodBody kind = pop(); |
| 232 AsyncMarker asyncModifier = pop(); | 232 AsyncMarker asyncModifier = pop(); |
| 233 List<FormalParameterBuilder> formals = pop(); | 233 List<FormalParameterBuilder> formals = pop(); |
| 234 List<TypeVariableBuilder> typeVariables = pop(); | 234 List<TypeVariableBuilder> typeVariables = pop(); |
| 235 String name = pop(); | 235 String name = pop(); |
| 236 TypeBuilder returnType = pop(); | 236 TypeBuilder returnType = pop(); |
| 237 int modifiers = Modifier.validate(pop(), | 237 int modifiers = Modifier.validate(pop(), |
| 238 isAbstract: kind == MethodBody.Abstract); | 238 isAbstract: kind == MethodBody.Abstract); |
| 239 List<MetadataBuilder> metadata = pop(); | 239 List<MetadataBuilder> metadata = pop(); |
| 240 checkEmpty(); | 240 checkEmpty(); |
| 241 library.addProcedure(metadata, modifiers, returnType, name, | 241 library.addProcedure(metadata, modifiers, returnType, name, |
| 242 typeVariables, formals, asyncModifier, computeProcedureKind(getOrSet), | 242 typeVariables, formals, asyncModifier, computeProcedureKind(getOrSet), |
| 243 beginToken.charOffset); | 243 beginToken.charOffset, isTopLevel: true); |
| 244 } | 244 } |
| 245 | 245 |
| 246 @override | 246 @override |
| 247 void handleNoFunctionBody(Token token) { | 247 void handleNoFunctionBody(Token token) { |
| 248 debugEvent("NoFunctionBody"); | 248 debugEvent("NoFunctionBody"); |
| 249 push(MethodBody.Abstract); | 249 push(MethodBody.Abstract); |
| 250 } | 250 } |
| 251 | 251 |
| 252 @override | 252 @override |
| 253 void handleFunctionBodySkipped(Token token) { | 253 void handleFunctionBodySkipped(Token token) { |
| 254 debugEvent("handleFunctionBodySkipped"); | 254 debugEvent("handleFunctionBodySkipped"); |
| 255 push(MethodBody.Regular); | 255 push(MethodBody.Regular); |
| 256 } | 256 } |
| 257 | 257 |
| 258 @override | 258 @override |
| 259 void beginMethod(Token token, Token name) { | 259 void beginMethod(Token token, Token name) { |
| 260 library.beginNestedDeclaration(hasMembers: false); | 260 library.beginNestedDeclaration(name.value, hasMembers: false); |
| 261 } | 261 } |
| 262 | 262 |
| 263 @override | 263 @override |
| 264 void endMethod(Token getOrSet, Token beginToken, Token endToken) { | 264 void endMethod(Token getOrSet, Token beginToken, Token endToken) { |
| 265 debugEvent("Method"); | 265 debugEvent("Method"); |
| 266 MethodBody bodyKind = pop(); | 266 MethodBody bodyKind = pop(); |
| 267 if (bodyKind == MethodBody.RedirectingFactoryBody) { | 267 if (bodyKind == MethodBody.RedirectingFactoryBody) { |
| 268 // This will cause an error later. | 268 // This will cause an error later. |
| 269 pop(); | 269 pop(); |
| 270 } | 270 } |
| (...skipping 11 matching lines...) Expand all Loading... |
| 282 kind = ProcedureKind.Operator; | 282 kind = ProcedureKind.Operator; |
| 283 } else { | 283 } else { |
| 284 name = nameOrOperator; | 284 name = nameOrOperator; |
| 285 kind = computeProcedureKind(getOrSet); | 285 kind = computeProcedureKind(getOrSet); |
| 286 } | 286 } |
| 287 TypeBuilder returnType = pop(); | 287 TypeBuilder returnType = pop(); |
| 288 int modifiers = Modifier.validate(pop(), | 288 int modifiers = Modifier.validate(pop(), |
| 289 isAbstract: bodyKind == MethodBody.Abstract); | 289 isAbstract: bodyKind == MethodBody.Abstract); |
| 290 List<MetadataBuilder> metadata = pop(); | 290 List<MetadataBuilder> metadata = pop(); |
| 291 library.addProcedure(metadata, modifiers, returnType, name, typeVariables, | 291 library.addProcedure(metadata, modifiers, returnType, name, typeVariables, |
| 292 formals, asyncModifier, kind, beginToken.charOffset); | 292 formals, asyncModifier, kind, beginToken.charOffset, isTopLevel: false); |
| 293 } | 293 } |
| 294 | 294 |
| 295 @override | 295 @override |
| 296 void endMixinApplication() { | 296 void endMixinApplication() { |
| 297 debugEvent("MixinApplication"); | 297 debugEvent("MixinApplication"); |
| 298 List<TypeBuilder> mixins = pop(); | 298 List<TypeBuilder> mixins = pop(); |
| 299 TypeBuilder supertype = pop(); | 299 TypeBuilder supertype = pop(); |
| 300 push(library.addMixinApplication(supertype, mixins, -1)); | 300 push(library.addMixinApplication(supertype, mixins, -1)); |
| 301 } | 301 } |
| 302 | 302 |
| 303 @override | 303 @override |
| 304 void beginNamedMixinApplication(Token begin, Token name) { | 304 void beginNamedMixinApplication(Token begin, Token name) { |
| 305 library.beginNestedDeclaration(hasMembers: false); | 305 library.beginNestedDeclaration(name.value, hasMembers: false); |
| 306 } | 306 } |
| 307 | 307 |
| 308 @override | 308 @override |
| 309 void endNamedMixinApplication( | 309 void endNamedMixinApplication( |
| 310 Token classKeyword, Token implementsKeyword, Token endToken) { | 310 Token classKeyword, Token implementsKeyword, Token endToken) { |
| 311 debugEvent("endNamedMixinApplication"); | 311 debugEvent("endNamedMixinApplication"); |
| 312 List<TypeBuilder> interfaces = popIfNotNull(implementsKeyword); | 312 List<TypeBuilder> interfaces = popIfNotNull(implementsKeyword); |
| 313 TypeBuilder mixinApplication = pop(); | 313 TypeBuilder mixinApplication = pop(); |
| 314 List<TypeVariableBuilder> typeVariables = pop(); | 314 List<TypeVariableBuilder> typeVariables = pop(); |
| 315 String name = pop(); | 315 String name = pop(); |
| (...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 427 void endEnum(Token enumKeyword, Token endBrace, int count) { | 427 void endEnum(Token enumKeyword, Token endBrace, int count) { |
| 428 List<String> constants = popList(count); | 428 List<String> constants = popList(count); |
| 429 String name = pop(); | 429 String name = pop(); |
| 430 List<MetadataBuilder> metadata = pop(); | 430 List<MetadataBuilder> metadata = pop(); |
| 431 library.addEnum(metadata, name, constants, enumKeyword.charOffset); | 431 library.addEnum(metadata, name, constants, enumKeyword.charOffset); |
| 432 checkEmpty(); | 432 checkEmpty(); |
| 433 } | 433 } |
| 434 | 434 |
| 435 @override | 435 @override |
| 436 void beginFunctionTypeAlias(Token token) { | 436 void beginFunctionTypeAlias(Token token) { |
| 437 library.beginNestedDeclaration(hasMembers: false); | 437 library.beginNestedDeclaration(null, hasMembers: false); |
| 438 } | 438 } |
| 439 | 439 |
| 440 @override | 440 @override |
| 441 void endFunctionTypeAlias(Token typedefKeyword, Token endToken) { | 441 void endFunctionTypeAlias(Token typedefKeyword, Token endToken) { |
| 442 debugEvent("endFunctionTypeAlias"); | 442 debugEvent("endFunctionTypeAlias"); |
| 443 List<FormalParameterBuilder> formals = pop(); | 443 List<FormalParameterBuilder> formals = pop(); |
| 444 List<TypeVariableBuilder> typeVariables = pop(); | 444 List<TypeVariableBuilder> typeVariables = pop(); |
| 445 String name = pop(); | 445 String name = pop(); |
| 446 TypeBuilder returnType = pop(); | 446 TypeBuilder returnType = pop(); |
| 447 List<MetadataBuilder> metadata = pop(); | 447 List<MetadataBuilder> metadata = pop(); |
| (...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 585 Link<Token> handleMemberName(Link<Token> identifiers) { | 585 Link<Token> handleMemberName(Link<Token> identifiers) { |
| 586 if (!isDartLibrary || identifiers.isEmpty) return identifiers; | 586 if (!isDartLibrary || identifiers.isEmpty) return identifiers; |
| 587 return removeNativeClause(identifiers); | 587 return removeNativeClause(identifiers); |
| 588 } | 588 } |
| 589 | 589 |
| 590 @override | 590 @override |
| 591 void debugEvent(String name) { | 591 void debugEvent(String name) { |
| 592 // printEvent(name); | 592 // printEvent(name); |
| 593 } | 593 } |
| 594 } | 594 } |
| OLD | NEW |