Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(208)

Side by Side Diff: pkg/kernel/lib/ast.dart

Issue 2874723002: Add a way to use shared CanonicalName root to deserialize Program. (Closed)
Patch Set: Actual changes. Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « pkg/front_end/test/fasta/testing/suite.dart ('k') | pkg/kernel/lib/kernel.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 /// ----------------------------------------------------------------------- 5 /// -----------------------------------------------------------------------
6 /// ERROR HANDLING 6 /// ERROR HANDLING
7 /// ----------------------------------------------------------------------- 7 /// -----------------------------------------------------------------------
8 /// 8 ///
9 /// As a rule of thumb, errors that can be detected statically are handled by 9 /// As a rule of thumb, errors that can be detected statically are handled by
10 /// the frontend, typically by translating the erroneous code into a 'throw' or 10 /// the frontend, typically by translating the erroneous code into a 'throw' or
(...skipping 4198 matching lines...) Expand 10 before | Expand all | Expand 10 after
4209 return hash; 4209 return hash;
4210 } 4210 }
4211 } 4211 }
4212 4212
4213 // ------------------------------------------------------------------------ 4213 // ------------------------------------------------------------------------
4214 // PROGRAM 4214 // PROGRAM
4215 // ------------------------------------------------------------------------ 4215 // ------------------------------------------------------------------------
4216 4216
4217 /// A way to bundle up all the libraries in a program. 4217 /// A way to bundle up all the libraries in a program.
4218 class Program extends TreeNode { 4218 class Program extends TreeNode {
4219 final CanonicalName root = new CanonicalName.root(); 4219 final CanonicalName root;
Siggi Cherem (dart-lang) 2017/05/10 18:00:38 Question for Kevin on API design here: - should w
Kevin Millikin (Google) 2017/05/11 08:22:55 Even without these changes, Program is already not
4220 4220
4221 final List<Library> libraries; 4221 final List<Library> libraries;
4222 4222
4223 /// Map from a source file uri to a line-starts table and source code. 4223 /// Map from a source file uri to a line-starts table and source code.
4224 /// Given a source file uri and a offset in that file one can translate 4224 /// Given a source file uri and a offset in that file one can translate
4225 /// it to a line:column position in that file. 4225 /// it to a line:column position in that file.
4226 final Map<String, Source> uriToSource; 4226 final Map<String, Source> uriToSource;
4227 4227
4228 /// Reference to the main method in one of the libraries. 4228 /// Reference to the main method in one of the libraries.
4229 Reference mainMethodName; 4229 Reference mainMethodName;
4230 4230
4231 Program([List<Library> libraries, Map<String, Source> uriToSource]) 4231 Program(
4232 : libraries = libraries ?? <Library>[], 4232 {CanonicalName nameRoot,
4233 List<Library> libraries,
4234 Map<String, Source> uriToSource})
4235 : root = nameRoot ?? new CanonicalName.root(),
4236 libraries = libraries ?? <Library>[],
4233 uriToSource = uriToSource ?? <String, Source>{} { 4237 uriToSource = uriToSource ?? <String, Source>{} {
4234 setParents(this.libraries, this); 4238 setParents(this.libraries, this);
4235 } 4239 }
4236 4240
4237 void computeCanonicalNames() { 4241 void computeCanonicalNames() {
4238 for (var library in libraries) { 4242 for (var library in libraries) {
4243 if (library.canonicalName != null) continue;
Kevin Millikin (Google) 2017/05/11 08:22:55 Keep in mind that this approach of skipping librar
scheglov 2017/05/11 18:31:25 OK, I rolled this back.
4239 root.getChildFromUri(library.importUri).bindTo(library.reference); 4244 root.getChildFromUri(library.importUri).bindTo(library.reference);
4240 library.computeCanonicalNames(); 4245 library.computeCanonicalNames();
4241 } 4246 }
4242 } 4247 }
4243 4248
4244 void unbindCanonicalNames() { 4249 void unbindCanonicalNames() {
4245 root.unbindAll(); 4250 root.unbindAll();
4246 } 4251 }
4247 4252
4248 Procedure get mainMethod => mainMethodName?.asProcedure; 4253 Procedure get mainMethod => mainMethodName?.asProcedure;
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after
4480 /// typedef has not been assigned a canonical name yet. 4485 /// typedef has not been assigned a canonical name yet.
4481 /// 4486 ///
4482 /// Returns `null` if the typedef is `null`. 4487 /// Returns `null` if the typedef is `null`.
4483 CanonicalName getCanonicalNameOfTypedef(Typedef typedef_) { 4488 CanonicalName getCanonicalNameOfTypedef(Typedef typedef_) {
4484 if (typedef_ == null) return null; 4489 if (typedef_ == null) return null;
4485 if (typedef_.canonicalName == null) { 4490 if (typedef_.canonicalName == null) {
4486 throw '$typedef_ has no canonical name'; 4491 throw '$typedef_ has no canonical name';
4487 } 4492 }
4488 return typedef_.canonicalName; 4493 return typedef_.canonicalName;
4489 } 4494 }
OLDNEW
« no previous file with comments | « pkg/front_end/test/fasta/testing/suite.dart ('k') | pkg/kernel/lib/kernel.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698