| Index: sdk/lib/_internal/compiler/samples/darttags/darttags.dart
 | 
| diff --git a/sdk/lib/_internal/compiler/samples/darttags/darttags.dart b/sdk/lib/_internal/compiler/samples/darttags/darttags.dart
 | 
| deleted file mode 100644
 | 
| index 744abb6a7562d8327711f2d79fa247947f1ed430..0000000000000000000000000000000000000000
 | 
| --- a/sdk/lib/_internal/compiler/samples/darttags/darttags.dart
 | 
| +++ /dev/null
 | 
| @@ -1,179 +0,0 @@
 | 
| -// Copyright (c) 2013, 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.
 | 
| -
 | 
| -// Usage: Add the following to your .gclient file (found in the parent
 | 
| -// of the "dart" in a gclient checkout of the Dart repositor).
 | 
| -//
 | 
| -// hooks = [
 | 
| -//   {
 | 
| -//     "pattern": ".",
 | 
| -//     "action": [
 | 
| -//       "dart/sdk/bin/dart",
 | 
| -//       "dart/sdk/lib/_internal/compiler/samples/darttags/darttags.dart",
 | 
| -//       "dart/TAGS"
 | 
| -//     ],
 | 
| -//   },
 | 
| -// ]
 | 
| -//
 | 
| -// Modify .emacs to contain:
 | 
| -//
 | 
| -//      (setq tags-table-list
 | 
| -//           '("DART_LOCATION/dart"))
 | 
| -//
 | 
| -// Where DART_LOCATION is the gclient directory where you found .gclient.
 | 
| -
 | 
| -import 'dart:io';
 | 
| -
 | 
| -import 'dart:mirrors';
 | 
| -
 | 
| -import '../../../libraries.dart'
 | 
| -    show LIBRARIES, LibraryInfo;
 | 
| -
 | 
| -import '../../implementation/mirrors/analyze.dart'
 | 
| -    show analyze;
 | 
| -import '../../implementation/mirrors/dart2js_mirrors.dart'
 | 
| -    show BackDoor;
 | 
| -import '../../implementation/mirrors/mirrors_util.dart' show nameOf;
 | 
| -
 | 
| -import '../../implementation/filenames.dart';
 | 
| -import '../../implementation/source_file.dart';
 | 
| -import '../../implementation/source_file_provider.dart';
 | 
| -import '../../implementation/util/uri_extras.dart';
 | 
| -
 | 
| -const DART2JS = '../../implementation/dart2js.dart';
 | 
| -const DART2JS_MIRROR = '../../implementation/mirrors/dart2js_mirrors.dart';
 | 
| -const SDK_ROOT = '../../../../../';
 | 
| -
 | 
| -bool isPublicDart2jsLibrary(String name) {
 | 
| -  return !name.startsWith('_') && LIBRARIES[name].isDart2jsLibrary;
 | 
| -}
 | 
| -
 | 
| -var handler;
 | 
| -RandomAccessFile output;
 | 
| -Uri outputUri;
 | 
| -
 | 
| -main(List<String> arguments) {
 | 
| -  handler = new FormattingDiagnosticHandler()
 | 
| -      ..throwOnError = true;
 | 
| -
 | 
| -  outputUri =
 | 
| -      handler.provider.cwd.resolve(nativeToUriPath(arguments.first));
 | 
| -  output = new File(arguments.first).openSync(mode: FileMode.WRITE);
 | 
| -
 | 
| -  Uri myLocation =
 | 
| -      handler.provider.cwd.resolveUri(Platform.script);
 | 
| -
 | 
| -  // Get the names of public dart2js libraries.
 | 
| -  Iterable<String> names = LIBRARIES.keys.where(isPublicDart2jsLibrary);
 | 
| -
 | 
| -  // Prepend "dart:" to the names.
 | 
| -  List<Uri> uris = names.map((String name) => Uri.parse('dart:$name')).toList();
 | 
| -
 | 
| -  // Append dart2js itself.
 | 
| -  uris.add(myLocation.resolve(DART2JS));
 | 
| -  uris.add(myLocation.resolve(DART2JS_MIRROR));
 | 
| -
 | 
| -  analyze(uris, myLocation.resolve(SDK_ROOT), null, handler.provider, handler)
 | 
| -      .then(processMirrors);
 | 
| -}
 | 
| -
 | 
| -processMirrors(MirrorSystem mirrors) {
 | 
| -  mirrors.libraries.forEach((_, LibraryMirror library) {
 | 
| -    BackDoor.compilationUnitsOf(library).forEach(emitTagsForCompilationUnit);
 | 
| -  });
 | 
| -
 | 
| -  output.closeSync();
 | 
| -}
 | 
| -
 | 
| -/**
 | 
| - * From http://en.wikipedia.org/wiki/Ctags#Etags_2
 | 
| - *
 | 
| - * A section starts with a two line header, one line containing a
 | 
| - * single <\x0c> character, followed by a line which consists of:
 | 
| - *
 | 
| - * {src_file},{size_of_tag_definition_data_in_bytes}
 | 
| - *
 | 
| - * The header is followed by tag definitions, one definition per line,
 | 
| - * with the format:
 | 
| - *
 | 
| - * {tag_definition_text}<\x7f>{tagname}<\x01>{line_number},{byte_offset}
 | 
| - */
 | 
| -emitTagsForCompilationUnit(compilationUnit) {
 | 
| -  // Certain variables in this method do not follow Dart naming
 | 
| -  // conventions.  This is because the format as written on Wikipedia
 | 
| -  // looks very similar to Dart string interpolation that the author
 | 
| -  // felt it would make sense to keep the names.
 | 
| -  Uri uri = compilationUnit.uri;
 | 
| -  var buffer = new StringBuffer();
 | 
| -  SourceFile file = handler.provider.sourceFiles['$uri'];
 | 
| -  String src_file = relativize(outputUri, uri, false);
 | 
| -
 | 
| -  compilationUnit.declarations.forEach((_, DeclarationMirror mirror) {
 | 
| -    Definition definition = new Definition.from(mirror, file);
 | 
| -    String name = nameOf(mirror);
 | 
| -    definition.writeOn(buffer, name);
 | 
| -
 | 
| -    if (mirror is ClassMirror) {
 | 
| -      emitTagsForClass(mirror, file, buffer);
 | 
| -    }
 | 
| -  });
 | 
| -
 | 
| -  var tag_definition_data = '$buffer';
 | 
| -  var size_of_tag_definition_data_in_bytes = tag_definition_data.length;
 | 
| -
 | 
| -  // The header.
 | 
| -  output.writeStringSync(
 | 
| -      '\x0c\n${src_file},${size_of_tag_definition_data_in_bytes}\n');
 | 
| -  output.writeStringSync(tag_definition_data);
 | 
| -}
 | 
| -
 | 
| -void emitTagsForClass(ClassMirror cls, SourceFile file, StringBuffer buffer) {
 | 
| -  String className = nameOf(cls);
 | 
| -
 | 
| -  cls.declarations.forEach((_, DeclarationMirror mirror) {
 | 
| -    Definition definition = new Definition.from(mirror, file);
 | 
| -    String name = nameOf(mirror);
 | 
| -    if (mirror is MethodMirror && mirror.isConstructor) {
 | 
| -      if (name == '') {
 | 
| -        name = className;
 | 
| -        definition.writeOn(buffer, 'new $className');
 | 
| -      } else {
 | 
| -        definition.writeOn(buffer, 'new $className.$name');
 | 
| -      }
 | 
| -    } else {
 | 
| -      definition.writeOn(buffer, '$className.$name');
 | 
| -    }
 | 
| -    definition.writeOn(buffer, name);
 | 
| -  });
 | 
| -}
 | 
| -
 | 
| -class Definition {
 | 
| -  final int byte_offset;
 | 
| -  final int line_number;
 | 
| -  final String tag_definition_text;
 | 
| -
 | 
| -  Definition(this.byte_offset, this.line_number, this.tag_definition_text);
 | 
| -
 | 
| -  factory Definition.from(DeclarationMirror mirror, SourceFile file) {
 | 
| -    var location = mirror.location;
 | 
| -    int byte_offset = location.offset;
 | 
| -    int line_number = file.getLine(byte_offset) + 1;
 | 
| -
 | 
| -    int lineStart = file.lineStarts[line_number - 1];
 | 
| -
 | 
| -    int lineEnd = file.lineStarts.length > line_number
 | 
| -        // Subract 1 to remove trailing newline.
 | 
| -        ? file.lineStarts[line_number] - 1
 | 
| -        : null;
 | 
| -    String tag_definition_text = file.slowText().substring(lineStart, lineEnd);
 | 
| -
 | 
| -    return new Definition(byte_offset, line_number, tag_definition_text);
 | 
| -  }
 | 
| -
 | 
| -  void writeOn(StringBuffer buffer, String tagname) {
 | 
| -    buffer.write(
 | 
| -        '${tag_definition_text}\x7f${tagname}'
 | 
| -        '\x01${line_number},${byte_offset}\n');
 | 
| -  }
 | 
| -}
 | 
| 
 |