| // Copyright (c) 2015, 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 sourcemap.trace_graph; |
| |
| import 'dart:collection'; |
| |
| import 'package:compiler/src/io/source_information.dart'; |
| import 'package:compiler/src/io/position_information.dart'; |
| |
| import 'sourcemap_html_helper.dart'; |
| |
| class TraceGraph { |
| List<TraceStep> steps = <TraceStep>[]; |
| TraceStep entry; |
| Queue stack = new Queue(); |
| |
| void addStep(TraceStep step) { |
| steps.add(step); |
| step.stack = stack.toList(); |
| } |
| |
| void pushBranch(branch) { |
| stack.addLast(branch); |
| } |
| |
| void popBranch() { |
| stack.removeLast(); |
| } |
| } |
| |
| class TraceStep { |
| final int id; |
| final node; |
| final Offset offset; |
| final List text; |
| final SourceLocation sourceLocation; |
| |
| TraceStep next; |
| Map<dynamic, TraceStep> branchMap; |
| |
| List stack; |
| |
| TraceStep( |
| this.id, |
| this.node, |
| this.offset, |
| this.text, |
| [this.sourceLocation]); |
| |
| String toString() => '<span style="background:${toColorCss(id)}">$id</span>'; |
| } |
| |