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

Unified Diff: tests/compiler/dart2js/sourcemaps/output_structure.dart

Issue 1752393002: Add source mappings and inlined Dart code to diff_view. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Updated cf. comments. Created 4 years, 9 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 side-by-side diff with in-line comments
Download patch
Index: tests/compiler/dart2js/sourcemaps/output_structure.dart
diff --git a/tests/compiler/dart2js/sourcemaps/output_structure.dart b/tests/compiler/dart2js/sourcemaps/output_structure.dart
index 4962ba9012136b152a43d515d852c5faf9024a42..b9bb84159785f46b301c120e10f37a08f20a63b7 100644
--- a/tests/compiler/dart2js/sourcemaps/output_structure.dart
+++ b/tests/compiler/dart2js/sourcemaps/output_structure.dart
@@ -4,8 +4,11 @@
library sourcemap.output_structure;
+import 'dart:math' as Math;
import 'html_parts.dart' show
- CodeLine;
+ Annotation,
+ CodeLine,
+ JsonStrategy;
// Constants used to identify the subsection of the JavaScript output. These
// are specifically for the unminified full_emitter output.
@@ -54,7 +57,7 @@ abstract class OutputEntity {
EntityKind get kind;
- Map toJson();
+ Map toJson(JsonStrategy strategy);
OutputEntity getEntityForLine(int line);
}
@@ -233,21 +236,24 @@ class OutputStructure extends OutputEntity {
accept(OutputVisitor visitor, arg) => visitor.visitStructure(this, arg);
@override
- Map toJson() {
+ Map toJson(JsonStrategy strategy) {
return {
- 'lines': lines.map((line) => line.toJson()).toList(),
+ 'lines': lines.map((line) => line.toJson(strategy)).toList(),
'headerEnd': headerEnd,
'footerStart': footerStart,
- 'children': children.map((child) => child.toJson()).toList(),
+ 'children': children.map((child) => child.toJson(strategy)).toList(),
};
}
- static OutputStructure fromJson(Map json) {
- List<CodeLine> lines = json['lines'].map(CodeLine.fromJson).toList();
+ static OutputStructure fromJson(Map json, JsonStrategy strategy) {
+ List<CodeLine> lines =
+ json['lines'].map((l) => CodeLine.fromJson(l, strategy)).toList();
int headerEnd = json['headerEnd'];
int footerStart = json['footerStart'];
List<LibraryBlock> children =
- json['children'].map(AbstractEntity.fromJson).toList();
+ json['children']
+ .map((j) => AbstractEntity.fromJson(j, strategy))
+ .toList();
return new OutputStructure(lines, headerEnd, footerStart, children);
}
}
@@ -262,18 +268,18 @@ abstract class AbstractEntity extends OutputEntity {
Interval get interval => new Interval(from, to);
@override
- Map toJson() {
+ Map toJson(JsonStrategy strategy) {
return {
'kind': kind.index,
'name': name,
'from': from,
'to': to,
- 'children': children.map((child) => child.toJson()).toList(),
+ 'children': children.map((child) => child.toJson(strategy)).toList(),
'codeSource': codeSource != null ? codeSource.toJson() : null,
};
}
- static AbstractEntity fromJson(Map json) {
+ static AbstractEntity fromJson(Map json, JsonStrategy strategy) {
EntityKind kind = EntityKind.values[json['kind']];
String name = json['name'];
int from = json['from'];
@@ -287,13 +293,15 @@ abstract class AbstractEntity extends OutputEntity {
LibraryBlock lib = new LibraryBlock(name, from)
..to = to
..codeSource = codeSource;
- json['children'].forEach((child) => lib.children.add(fromJson(child)));
+ json['children']
+ .forEach((child) => lib.children.add(fromJson(child, strategy)));
return lib;
case EntityKind.CLASS:
LibraryClass cls = new LibraryClass(name, from)
..to = to
..codeSource = codeSource;
- json['children'].forEach((child) => cls.children.add(fromJson(child)));
+ json['children']
+ .forEach((child) => cls.children.add(fromJson(child, strategy)));
return cls;
case EntityKind.TOP_LEVEL_FUNCTION:
return new TopLevelFunction(name, from)
@@ -320,7 +328,7 @@ abstract class AbstractEntity extends OutputEntity {
..to = to
..codeSource = codeSource;
json['children'].forEach(
- (child) => statics.children.add(fromJson(child)));
+ (child) => statics.children.add(fromJson(child, strategy)));
return statics;
case EntityKind.STATIC_FUNCTION:
return new StaticFunction(name, from)
@@ -334,7 +342,7 @@ abstract class AbstractEntity extends OutputEntity {
class LibraryBlock extends AbstractEntity {
List<BasicEntity> children = <BasicEntity>[];
int get headerEnd => from + 2;
- int get footerStart => to - 1;
+ int get footerStart => to/* - 1*/;
LibraryBlock(String name, int from) : super(name, from);
@@ -624,9 +632,21 @@ class Interval {
int get length => to - from;
+ bool get isEmpty => from == to;
+
bool contains(int value) {
return from <= value && value < to;
}
+
+ Interval include(int index) {
+ return new Interval(Math.min(from, index), Math.max(to, index + 1));
+ }
+
+ bool inWindow(int index, {int windowSize: 0}) {
+ return from - windowSize <= index && index < to + windowSize;
+ }
+
+ String toString() => '[$from,$to[';
}
enum CodeKind {
@@ -635,15 +655,63 @@ enum CodeKind {
MEMBER,
}
+class CodeLocation {
+ final Uri uri;
+ final String name;
+ final int offset;
+
+ CodeLocation(this.uri, this.name, this.offset);
+
+ String toString() => '$uri:$name:$offset';
+
+ Map toJson(JsonStrategy strategy) {
+ return {
+ 'uri': uri.toString(),
+ 'name': name,
+ 'offset': offset,
+ };
+ }
+
+ static CodeLocation fromJson(Map json, JsonStrategy strategy) {
+ if (json == null) return null;
+ return new CodeLocation(
+ Uri.parse(json['uri']),
+ json['name'],
+ json['offset']);
+ }
+}
+
+/// A named entity in source code. This is used to serialize [Element]
+/// references without serializing the [Element] itself.
class CodeSource {
final CodeKind kind;
final Uri uri;
final String name;
final int begin;
final int end;
+ final List<CodeSource> members = <CodeSource>[];
CodeSource(this.kind, this.uri, this.name, this.begin, this.end);
+ int get hashCode {
+ return
+ kind.hashCode * 13 +
+ uri.hashCode * 17 +
+ name.hashCode * 19 +
+ begin.hashCode * 23;
+ }
+
+ bool operator ==(other) {
+ if (identical(this, other)) return true;
+ if (other is! CodeSource) return false;
+ return
+ kind == other.kind &&
+ uri == other.uri &&
+ name == other.name &&
+ begin == other.begin;
+
+ }
+
String toString() => '${toJson()}';
Map toJson() {
@@ -653,16 +721,19 @@ class CodeSource {
'name': name,
'begin': begin,
'end': end,
+ 'members': members.map((c) => c.toJson()).toList(),
};
}
static CodeSource fromJson(Map json) {
if (json == null) return null;
- return new CodeSource(
+ CodeSource codeSource = new CodeSource(
CodeKind.values[json['kind']],
Uri.parse(json['uri']),
json['name'],
json['begin'],
json['end']);
+ json['members'].forEach((m) => codeSource.members.add(fromJson(m)));
+ return codeSource;
}
}
« no previous file with comments | « tests/compiler/dart2js/sourcemaps/html_parts.dart ('k') | tests/compiler/dart2js/sourcemaps/sourcemap_helper.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698