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.source_library_builder; | 5 library fasta.source_library_builder; |
6 | 6 |
7 import 'package:front_end/src/scanner/token.dart' show Token; | 7 import 'package:front_end/src/scanner/token.dart' show Token; |
8 | 8 |
9 import 'package:kernel/ast.dart' show ProcedureKind; | 9 import 'package:kernel/ast.dart' show ProcedureKind; |
10 | 10 |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
51 final List<SourceLibraryBuilder<T, R>> parts = <SourceLibraryBuilder<T, R>>[]; | 51 final List<SourceLibraryBuilder<T, R>> parts = <SourceLibraryBuilder<T, R>>[]; |
52 | 52 |
53 final List<Import> imports = <Import>[]; | 53 final List<Import> imports = <Import>[]; |
54 | 54 |
55 final Scope importScope; | 55 final Scope importScope; |
56 | 56 |
57 final Uri fileUri; | 57 final Uri fileUri; |
58 | 58 |
59 final List<List> implementationBuilders = <List<List>>[]; | 59 final List<List> implementationBuilders = <List<List>>[]; |
60 | 60 |
| 61 /// Indicates whether type inference (and type promotion) should be disabled |
| 62 /// for this library. |
| 63 final bool disableTypeInference; |
| 64 |
61 String name; | 65 String name; |
62 | 66 |
63 String partOfName; | 67 String partOfName; |
64 | 68 |
65 Uri partOfUri; | 69 Uri partOfUri; |
66 | 70 |
67 List<MetadataBuilder> metadata; | 71 List<MetadataBuilder> metadata; |
68 | 72 |
69 /// The current declaration that is being built. When we start parsing a | 73 /// The current declaration that is being built. When we start parsing a |
70 /// declaration (class, method, and so on), we don't have enough information | 74 /// declaration (class, method, and so on), we don't have enough information |
71 /// to create a builder and this object records its members and types until, | 75 /// to create a builder and this object records its members and types until, |
72 /// for example, [addClass] is called. | 76 /// for example, [addClass] is called. |
73 DeclarationBuilder<T> currentDeclaration; | 77 DeclarationBuilder<T> currentDeclaration; |
74 | 78 |
75 bool canAddImplementationBuilders = false; | 79 bool canAddImplementationBuilders = false; |
76 | 80 |
77 SourceLibraryBuilder(SourceLoader loader, Uri fileUri) | 81 SourceLibraryBuilder(SourceLoader loader, Uri fileUri) |
78 : this.fromScopes(loader, fileUri, new DeclarationBuilder<T>.library(), | 82 : this.fromScopes(loader, fileUri, new DeclarationBuilder<T>.library(), |
79 new Scope.top()); | 83 new Scope.top()); |
80 | 84 |
81 SourceLibraryBuilder.fromScopes( | 85 SourceLibraryBuilder.fromScopes( |
82 this.loader, this.fileUri, this.libraryDeclaration, this.importScope) | 86 this.loader, this.fileUri, this.libraryDeclaration, this.importScope) |
83 : currentDeclaration = libraryDeclaration, | 87 : disableTypeInference = loader.target.disableTypeInference, |
| 88 currentDeclaration = libraryDeclaration, |
84 super( | 89 super( |
85 fileUri, libraryDeclaration.toScope(importScope), new Scope.top()); | 90 fileUri, libraryDeclaration.toScope(importScope), new Scope.top()); |
86 | 91 |
87 Uri get uri; | 92 Uri get uri; |
88 | 93 |
89 bool get isPart => partOfName != null || partOfUri != null; | 94 bool get isPart => partOfName != null || partOfUri != null; |
90 | 95 |
91 bool get isPatch; | 96 bool get isPatch; |
92 | 97 |
93 List<T> get types => libraryDeclaration.types; | 98 List<T> get types => libraryDeclaration.types; |
(...skipping 505 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
599 /// synthesize type variables on the factory matching the class'. | 604 /// synthesize type variables on the factory matching the class'. |
600 void addFactoryDeclaration( | 605 void addFactoryDeclaration( |
601 ProcedureBuilder procedure, DeclarationBuilder<T> factoryDeclaration) { | 606 ProcedureBuilder procedure, DeclarationBuilder<T> factoryDeclaration) { |
602 factoryDeclarations[procedure] = factoryDeclaration; | 607 factoryDeclarations[procedure] = factoryDeclaration; |
603 } | 608 } |
604 | 609 |
605 Scope toScope(Scope parent) { | 610 Scope toScope(Scope parent) { |
606 return new Scope(members, setters, parent, isModifiable: false); | 611 return new Scope(members, setters, parent, isModifiable: false); |
607 } | 612 } |
608 } | 613 } |
OLD | NEW |