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

Side by Side Diff: lib/src/utils.dart

Issue 1174643003: expose strong checker API, for use by analyzer_cli (Closed) Base URL: git@github.com:dart-lang/dev_compiler.git@master
Patch Set: Created 5 years, 6 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
OLDNEW
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, 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 /// Holds a couple utility functions used at various places in the system. 5 /// Holds a couple utility functions used at various places in the system.
6 library dev_compiler.src.utils; 6 library dev_compiler.src.utils;
7 7
8 import 'dart:io'; 8 import 'dart:io';
9 9
10 import 'package:path/path.dart' as path; 10 import 'package:path/path.dart' as path;
11 import 'package:analyzer/src/generated/ast.dart' 11 import 'package:analyzer/src/generated/ast.dart'
12 show 12 show
13 ImportDirective, 13 ImportDirective,
14 ExportDirective, 14 ExportDirective,
15 PartDirective, 15 PartDirective,
16 CompilationUnit, 16 CompilationUnit,
17 Identifier, 17 Identifier,
18 AnnotatedNode, 18 AnnotatedNode,
19 AstNode, 19 AstNode,
20 Expression, 20 Expression,
21 SimpleIdentifier, 21 SimpleIdentifier,
22 MethodInvocation; 22 MethodInvocation,
23 NodeLocator,
Jennifer Messerly 2015/06/10 22:34:17 will revert this.
24 UnifyingAstVisitor;
23 import 'package:analyzer/src/generated/constant.dart' show DartObjectImpl; 25 import 'package:analyzer/src/generated/constant.dart' show DartObjectImpl;
24 import 'package:analyzer/src/generated/element.dart'; 26 import 'package:analyzer/src/generated/element.dart';
25 import 'package:analyzer/src/generated/engine.dart' 27 import 'package:analyzer/src/generated/engine.dart'
26 show ParseDartTask, AnalysisContext; 28 show ParseDartTask, AnalysisContext;
27 import 'package:analyzer/src/generated/resolver.dart' show TypeProvider; 29 import 'package:analyzer/src/generated/resolver.dart' show TypeProvider;
28 import 'package:analyzer/src/generated/source.dart' show Source; 30 import 'package:analyzer/src/generated/source.dart' show Source;
29 import 'package:analyzer/analyzer.dart' show parseDirectives; 31 import 'package:analyzer/analyzer.dart' show parseDirectives;
30 import 'package:crypto/crypto.dart' show CryptoUtils, MD5; 32 import 'package:crypto/crypto.dart' show CryptoUtils, MD5;
31 import 'package:source_span/source_span.dart'; 33 import 'package:source_span/source_span.dart';
32 import 'package:yaml/yaml.dart'; 34 import 'package:yaml/yaml.dart';
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
72 if (result.startsWith(new RegExp('[0-9]')) || invalidVariableName(result)) { 74 if (result.startsWith(new RegExp('[0-9]')) || invalidVariableName(result)) {
73 return '\$$result'; 75 return '\$$result';
74 } 76 }
75 return result; 77 return result;
76 } 78 }
77 79
78 // Invalid characters for identifiers, which would need to be escaped. 80 // Invalid characters for identifiers, which would need to be escaped.
79 final _invalidCharInIdentifier = new RegExp(r'[^A-Za-z_$0-9]'); 81 final _invalidCharInIdentifier = new RegExp(r'[^A-Za-z_$0-9]');
80 82
81 /// Returns all libraries transitively imported or exported from [start]. 83 /// Returns all libraries transitively imported or exported from [start].
82 Iterable<LibraryElement> reachableLibraries(LibraryElement start) { 84 List<LibraryElement> reachableLibraries(LibraryElement start) {
83 var results = <LibraryElement>[]; 85 var results = <LibraryElement>[];
84 var seen = new Set(); 86 var seen = new Set();
85 void find(LibraryElement lib) { 87 void find(LibraryElement lib) {
86 if (seen.contains(lib)) return; 88 if (seen.contains(lib)) return;
87 seen.add(lib); 89 seen.add(lib);
88 results.add(lib); 90 results.add(lib);
89 lib.importedLibraries.forEach(find); 91 lib.importedLibraries.forEach(find);
90 lib.exportedLibraries.forEach(find); 92 lib.exportedLibraries.forEach(find);
91 } 93 }
92 find(start); 94 find(start);
(...skipping 369 matching lines...) Expand 10 before | Expand all | Expand 10 after
462 lineInfo.getLocation(++lineEnd).lineNumber == lineNum); 464 lineInfo.getLocation(++lineEnd).lineNumber == lineNum);
463 465
464 var text = content.substring(start, end); 466 var text = content.substring(start, end);
465 var lineText = content.substring(lineStart, lineEnd); 467 var lineText = content.substring(lineStart, lineEnd);
466 return new SourceSpanWithContext(startLoc, endLoc, text, lineText); 468 return new SourceSpanWithContext(startLoc, endLoc, text, lineText);
467 } 469 }
468 470
469 bool isInlineJS(Element e) => e is FunctionElement && 471 bool isInlineJS(Element e) => e is FunctionElement &&
470 e.library.source.uri.toString() == 'dart:_foreign_helper' && 472 e.library.source.uri.toString() == 'dart:_foreign_helper' &&
471 e.name == 'JS'; 473 e.name == 'JS';
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698