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:front_end/src/fasta/scanner/token.dart' show SymbolToken; | 9 import 'package:front_end/src/fasta/scanner/token.dart' show SymbolToken; |
10 | 10 |
11 import 'package:kernel/ast.dart' show ProcedureKind; | 11 import 'package:kernel/ast.dart' show ProcedureKind; |
12 | 12 |
| 13 import '../../base/resolve_relative_uri.dart' show resolveRelativeUri; |
| 14 |
13 import '../combinator.dart' show Combinator; | 15 import '../combinator.dart' show Combinator; |
14 | 16 |
15 import '../errors.dart' show inputError, internalError; | 17 import '../errors.dart' show inputError, internalError; |
16 | 18 |
17 import '../export.dart' show Export; | 19 import '../export.dart' show Export; |
18 | 20 |
19 import '../import.dart' show Import; | 21 import '../import.dart' show Import; |
20 | 22 |
21 import 'source_loader.dart' show SourceLoader; | 23 import 'source_loader.dart' show SourceLoader; |
22 | 24 |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
80 SourceLibraryBuilder.fromScopes( | 82 SourceLibraryBuilder.fromScopes( |
81 this.loader, this.fileUri, this.libraryDeclaration, this.importScope) | 83 this.loader, this.fileUri, this.libraryDeclaration, this.importScope) |
82 : currentDeclaration = libraryDeclaration, | 84 : currentDeclaration = libraryDeclaration, |
83 super( | 85 super( |
84 fileUri, libraryDeclaration.toScope(importScope), new Scope.top()); | 86 fileUri, libraryDeclaration.toScope(importScope), new Scope.top()); |
85 | 87 |
86 Uri get uri; | 88 Uri get uri; |
87 | 89 |
88 bool get isPart => partOfName != null || partOfUri != null; | 90 bool get isPart => partOfName != null || partOfUri != null; |
89 | 91 |
| 92 bool get isPatch; |
| 93 |
90 List<T> get types => libraryDeclaration.types; | 94 List<T> get types => libraryDeclaration.types; |
91 | 95 |
92 T addNamedType(String name, List<T> arguments, int charOffset); | 96 T addNamedType(String name, List<T> arguments, int charOffset); |
93 | 97 |
94 T addMixinApplication(T supertype, List<T> mixins, int charOffset); | 98 T addMixinApplication(T supertype, List<T> mixins, int charOffset); |
95 | 99 |
96 T addType(T type) { | 100 T addType(T type) { |
97 currentDeclaration.addType(type); | 101 currentDeclaration.addType(type); |
98 return type; | 102 return type; |
99 } | 103 } |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
143 prefix, | 147 prefix, |
144 combinators, | 148 combinators, |
145 charOffset, | 149 charOffset, |
146 prefixCharOffset)); | 150 prefixCharOffset)); |
147 } | 151 } |
148 | 152 |
149 void addPart(List<MetadataBuilder> metadata, String path) { | 153 void addPart(List<MetadataBuilder> metadata, String path) { |
150 Uri resolvedUri; | 154 Uri resolvedUri; |
151 Uri newFileUri; | 155 Uri newFileUri; |
152 if (uri.scheme == "dart") { | 156 if (uri.scheme == "dart") { |
153 resolvedUri = new Uri(scheme: "dart", path: "${uri.path}/$path"); | 157 resolvedUri = resolveRelativeUri(uri, Uri.parse(path)); |
154 newFileUri = fileUri.resolve(path); | 158 newFileUri = fileUri.resolve(path); |
155 } else { | 159 } else { |
156 resolvedUri = uri.resolve(path); | 160 resolvedUri = uri.resolve(path); |
157 | 161 if (uri.scheme != "package") { |
158 // TODO(ahe): This is wrong for package URIs. | 162 newFileUri = fileUri.resolve(path); |
159 newFileUri = fileUri.resolve(path); | 163 } |
160 } | 164 } |
161 parts | 165 parts |
162 .add(loader.read(resolvedUri, -1, fileUri: newFileUri, accessor: this)); | 166 .add(loader.read(resolvedUri, -1, fileUri: newFileUri, accessor: this)); |
163 } | 167 } |
164 | 168 |
165 void addPartOf(List<MetadataBuilder> metadata, String name, String uri) { | 169 void addPartOf(List<MetadataBuilder> metadata, String name, String uri) { |
166 partOfName = name; | 170 partOfName = name; |
167 partOfUri = uri == null ? null : this.uri.resolve(uri); | 171 partOfUri = uri == null ? null : this.uri.resolve(uri); |
168 } | 172 } |
169 | 173 |
(...skipping 397 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
567 /// synthesize type variables on the factory matching the class'. | 571 /// synthesize type variables on the factory matching the class'. |
568 void addFactoryDeclaration( | 572 void addFactoryDeclaration( |
569 ProcedureBuilder procedure, DeclarationBuilder<T> factoryDeclaration) { | 573 ProcedureBuilder procedure, DeclarationBuilder<T> factoryDeclaration) { |
570 factoryDeclarations[procedure] = factoryDeclaration; | 574 factoryDeclarations[procedure] = factoryDeclaration; |
571 } | 575 } |
572 | 576 |
573 Scope toScope(Scope parent) { | 577 Scope toScope(Scope parent) { |
574 return new Scope(members, setters, parent, isModifiable: false); | 578 return new Scope(members, setters, parent, isModifiable: false); |
575 } | 579 } |
576 } | 580 } |
OLD | NEW |