Index: pkg/dart2js_incremental/lib/diff.dart |
diff --git a/pkg/dart2js_incremental/lib/diff.dart b/pkg/dart2js_incremental/lib/diff.dart |
deleted file mode 100644 |
index b0569d1e399c37219f779a365dfdd7bc8b042d90..0000000000000000000000000000000000000000 |
--- a/pkg/dart2js_incremental/lib/diff.dart |
+++ /dev/null |
@@ -1,122 +0,0 @@ |
-// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
-// for details. All rights reserved. Use of this source code is governed by a |
-// BSD-style license that can be found in the LICENSE file. |
- |
-library trydart.poi.diff; |
- |
-import 'package:compiler/src/elements/elements.dart' show |
- AbstractFieldElement, |
- ClassElement, |
- CompilationUnitElement, |
- Element, |
- ElementCategory, |
- FunctionElement, |
- LibraryElement, |
- ScopeContainerElement; |
- |
-import 'package:compiler/src/elements/modelx.dart' as modelx; |
- |
-import 'package:compiler/src/elements/modelx.dart' show |
- DeclarationSite; |
- |
-import 'package:compiler/src/parser/partial_elements.dart' show |
- PartialClassElement, |
- PartialElement; |
- |
-import 'package:compiler/src/tokens/token.dart' show |
- ErrorToken, |
- Token; |
- |
-import 'package:compiler/src/tokens/token_constants.dart' show |
- EOF_TOKEN, |
- IDENTIFIER_TOKEN, |
- KEYWORD_TOKEN; |
- |
-class Difference { |
- final DeclarationSite before; |
- final DeclarationSite after; |
- |
- /// Records the position of first difference between [before] and [after]. If |
- /// either [before] or [after] are null, [token] is null. |
- Token token; |
- |
- Difference(this.before, this.after) { |
- if (before == after) { |
- throw '[before] and [after] are the same.'; |
- } |
- } |
- |
- String toString() { |
- if (before == null) return 'Added($after)'; |
- if (after == null) return 'Removed($before)'; |
- return 'Modified($after -> $before)'; |
- } |
-} |
- |
-List<Difference> computeDifference( |
- ScopeContainerElement before, |
- ScopeContainerElement after) { |
- Map<String, DeclarationSite> beforeMap = <String, DeclarationSite>{}; |
- before.forEachLocalMember((modelx.ElementX element) { |
- DeclarationSite site = element.declarationSite; |
- assert(site != null || element.isSynthesized); |
- if (!element.isSynthesized) { |
- beforeMap[element.name] = site; |
- } |
- }); |
- List<Difference> modifications = <Difference>[]; |
- List<Difference> potentiallyChanged = <Difference>[]; |
- after.forEachLocalMember((modelx.ElementX element) { |
- DeclarationSite existing = beforeMap.remove(element.name); |
- if (existing == null) { |
- modifications.add(new Difference(null, element.declarationSite)); |
- } else { |
- potentiallyChanged.add(new Difference(existing, element.declarationSite)); |
- } |
- }); |
- |
- modifications.addAll( |
- beforeMap.values.map( |
- (DeclarationSite site) => new Difference(site, null))); |
- |
- modifications.addAll( |
- potentiallyChanged.where(areDifferentElements)); |
- |
- return modifications; |
-} |
- |
-bool areDifferentElements(Difference diff) { |
- DeclarationSite before = diff.before; |
- DeclarationSite after = diff.after; |
- if (before is PartialElement && after is PartialElement) { |
- Token beforeToken = before.beginToken; |
- Token afterToken = after.beginToken; |
- Token stop = before.endToken; |
- int beforeKind = beforeToken.kind; |
- int afterKind = afterToken.kind; |
- while (beforeKind != EOF_TOKEN && afterKind != EOF_TOKEN) { |
- |
- if (beforeKind != afterKind) { |
- diff.token = afterToken; |
- return true; |
- } |
- |
- if (beforeToken is! ErrorToken && afterToken is! ErrorToken) { |
- if (beforeToken.value != afterToken.value) { |
- diff.token = afterToken; |
- return true; |
- } |
- } |
- |
- if (beforeToken == stop) return false; |
- |
- beforeToken = beforeToken.next; |
- afterToken = afterToken.next; |
- beforeKind = beforeToken.kind; |
- afterKind = afterToken.kind; |
- } |
- return beforeKind != afterKind; |
- } |
- print("$before isn't a PartialElement"); |
- return true; |
-} |