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

Unified Diff: pkg/fletchc/lib/src/fletch_system_printer.dart

Issue 1659163007: Rename fletch -> dartino (Closed) Base URL: https://github.com/dartino/sdk.git@master
Patch Set: address comments Created 4 years, 11 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
« no previous file with comments | « pkg/fletchc/lib/src/fletch_system_builder.dart ('k') | pkg/fletchc/lib/src/function_codegen.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/fletchc/lib/src/fletch_system_printer.dart
diff --git a/pkg/fletchc/lib/src/fletch_system_printer.dart b/pkg/fletchc/lib/src/fletch_system_printer.dart
deleted file mode 100644
index e822c7ab436a9f43e2f745c487610351894db8ea..0000000000000000000000000000000000000000
--- a/pkg/fletchc/lib/src/fletch_system_printer.dart
+++ /dev/null
@@ -1,231 +0,0 @@
-// Copyright (c) 2015, the Dartino 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.md file.
-
-library fletchc.fletch_system_printer;
-
-import '../fletch_system.dart' show
- FletchClass,
- FletchFunction,
- FletchSystem;
-
-import 'package:compiler/src/util/uri_extras.dart' show
- relativize;
-
-import 'fletch_selector.dart' show
- FletchSelector,
- SelectorKind;
-
-import 'package:compiler/src/elements/elements.dart' show
- Element,
- CompilationUnitElement;
-
-class FletchSystemPrinter {
- final FletchSystem system;
- final Uri base;
- final StringBuffer buffer = new StringBuffer();
- final String baseIndentation = " ";
-
- bool beginningOfLine = true;
-
- int indentationLevel = 0;
-
- FletchSystemPrinter(this.system, this.base);
-
- void indent() {
- for (int i = 0; i < indentationLevel; i++) {
- buffer.write(baseIndentation);
- }
- }
-
- void indented(f()) {
- ++indentationLevel;
- try {
- f();
- } finally {
- --indentationLevel;
- }
- }
-
- void write(String text) {
- if (beginningOfLine) {
- indent();
- beginningOfLine = false;
- }
- buffer.write(text);
- }
-
- void writeLine([String line = ""]) {
- write("$line\n");
- beginningOfLine = true;
- }
-
- void writeFletchFunctionAsBody(FletchFunction function) {
- if (function.element != null) {
- writeLine("=> ${function.element};");
- } else {
- writeLine("{");
- indented(() {
- for (String line in function.verboseToString().trim().split("\n")) {
- writeLine("// $line");
- }
- });
- writeLine("}");
- }
- }
-
- void writeMethodTableEntry(
- DecodedFletchSelector selector, int functionId) {
- switch (selector.kind) {
- case SelectorKind.Method:
- write("${selector.symbol}#${selector.arity}()");
- break;
-
- case SelectorKind.Getter:
- assert(selector.arity == 0);
- if (selector.symbol.startsWith("?is?")) {
- writeLine("type test ${selector.symbol.substring(4)}");
- return;
- }
- write("get ${selector.symbol}");
- break;
-
- case SelectorKind.Setter:
- assert(selector.arity == 1);
- write("set ${selector.symbol}");
- break;
- }
- write(" ");
- FletchFunction function = system.functionsById[functionId];
- writeFletchFunctionAsBody(function);
- }
-
- void writeFletchClass(FletchClass cls, Set<FletchFunction> unseen) {
- // TODO(ahe): Important if class is builtin or not. Information lost in
- // FletchNewClassBuilder.finalizeClass.
- if (cls.element != null) {
- writeLine("class ${cls.element.name} {");
- } else {
- writeLine("$cls {");
- }
- indented(() {
- Map<DecodedFletchSelector, int> methodTable =
- <DecodedFletchSelector, int>{};
- for (var pair in cls.methodTable) {
- DecodedFletchSelector selector =
- new DecodedFletchSelector.fromEncodedSelector(pair.fst, system);
- methodTable[selector] = pair.snd;
- }
- List<DecodedFletchSelector> selectors = methodTable.keys.toList()..sort();
- for (DecodedFletchSelector selector in selectors) {
- int methodId = methodTable[selector];
- unseen.remove(system.lookupFunctionById(methodId));
- writeMethodTableEntry(selector, methodId);
- }
- });
- writeLine("}");
- }
-
- String generateDebugString() {
- buffer.clear();
-
- Map<String, List<Element>> elementsByPath = <String, List<Element>>{};
- Set<FletchFunction> unseenFunctions = new Set<FletchFunction>();
-
- for (var pair in system.functionsById) {
- unseenFunctions.add(pair.snd);
- }
-
- groupByPath(pair) {
- Element element = pair.fst;
- String path =
- relativize(base, element.compilationUnit.script.resourceUri, false);
- List<Element> elements =
- elementsByPath.putIfAbsent(path, () => <Element>[]);
- elements.add(element);
- }
- system.functionsByElement.forEach(groupByPath);
- system.classesByElement.forEach(groupByPath);
- List paths = elementsByPath.keys.toList();
- paths.sort();
- for (String path in paths) {
- writeLine("$path");
- indented(() {
- List<Element> elements = elementsByPath[path];
- elements.sort((a, b) => "$a".compareTo("$b"));
- for (Element element in elements) {
- if (element.isClass) {
- writeFletchClass(system.classesByElement[element], unseenFunctions);
- } else if (!element.isInstanceMember) {
- unseenFunctions.remove(system.functionsByElement[element]);
- // TODO(ahe): It would probably be better to call
- // writeFletchFunctionAsBody here, but we have an element, not an
- // ID.
- writeLine("$element");
- }
- }
- });
- }
-
- writeLine("Classes without an element:");
- indented(() {
- for (var pair in system.classesById) {
- FletchClass fletchClass = pair.snd;
- if (system.classesByElement[fletchClass.element] != fletchClass) {
- writeFletchClass(fletchClass, unseenFunctions);
- }
- }
- });
-
- writeLine("Other functions:");
- indented(() {
- for (var pair in system.functionsById) {
- FletchFunction fletchFunction = pair.snd;
- if (unseenFunctions.remove(fletchFunction)) {
- write("$fletchFunction ");
- writeFletchFunctionAsBody(fletchFunction);
- }
- }
- });
-
- return "$buffer";
- }
-
- int compareUnits(CompilationUnitElement a, CompilationUnitElement b) {
- String aPath = relativize(base, a.script.resourceUri, false);
- String bPath = relativize(base, b.script.resourceUri, false);
- return aPath.compareTo(bPath);
- }
-}
-
-class DecodedFletchSelector implements Comparable<DecodedFletchSelector> {
- final FletchSelector selector;
-
- final String symbol;
-
- const DecodedFletchSelector(this.selector, this.symbol);
-
- factory DecodedFletchSelector.fromEncodedSelector(
- int encodedSelector,
- FletchSystem system) {
- FletchSelector selector = new FletchSelector(encodedSelector);
- return new DecodedFletchSelector(
- selector, system.symbolByFletchSelectorId[selector.id]);
- }
-
- int get id => selector.id;
-
- SelectorKind get kind => selector.kind;
-
- int get arity => selector.arity;
-
- String toString() => "DecodedFletchSelector($id, $symbol, $kind, $arity)";
-
- int compareTo(DecodedFletchSelector other) {
- int result = this.symbol.compareTo(other.symbol);
- if (result != 0) return result;
- result = this.kind.index.compareTo(other.kind.index);
- if (result != 0) return result;
- return this.arity.compareTo(other.arity);
- }
-}
« no previous file with comments | « pkg/fletchc/lib/src/fletch_system_builder.dart ('k') | pkg/fletchc/lib/src/function_codegen.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698