2015-03-09 14 views
6

Chciałem eksperymentować przy użyciu kompilatora Dart dev, który generuje ES6. Zainstalowałem goCzy ktoś dostał Dev_compiler Dart do pracy?

pub global activate -sgit [email protected]:dart-lang/dev_compiler.git 

Potem stworzył prostą klasę Dart:

library wat; 

class Person { 
    String first_name; 
    String last_name; 
    int amountOfAwesomeness; 

    Person(this.first_name, this.last_name, [this.amountOfAwesomeness = 0]); 
    String get name => "$first_name $last_name is awesome:$amountOfAwesomeness"; 
} 

Potem próbował go skompilować:

dartdev -o ./ person.dart 

ale otrzymuję wyjątek:

Unhandled exception: 
'package:dev_compiler/src/dependency_graph.dart': Failed assertion: line 60 pos 16: 'false' is not true. 
#0  _AssertionError._throwNew (dart:core-patch/errors_patch.dart:27) 
#1  SourceGraph.nodeFromUri.<anonymous closure> (package:dev_compiler/src/dependency_graph.dart:60:16) 
#2  _CompactLinkedHashMap.putIfAbsent (dart:collection-patch/compact_hash.dart:193) 
#3  SourceGraph.nodeFromUri (package:dev_compiler/src/dependency_graph.dart:50:29) 
#4  Compiler.Compiler (package:dev_compiler/devc.dart:76:38) 
#5  main (http://localhost:60878/devc.dart:42:22) 
#6  _startIsolate.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:253) 
#7  _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:142) 

Wydaje się być prostym przykładem, takim jak ten d pracy. Co ja robię źle? Czy dev_compiler nie jest jeszcze gotowy do wypróbowania?

+1

Ddc to super duper mega early. Najlepsze do zgłaszania błędów tutaj: https://github.com/dart-lang/dev_compiler/issues –

Odpowiedz

7

UPDATE:

Kompilator rozwój dart jest budowany w pubie w Dart wersji 1.24. Zobacz tutaj https://github.com/dart-lang/sdk/blob/master/CHANGELOG.md#tool-changes-1

Jeśli chcesz go używać, wystarczy użyć Dart 1,24 i dodać do swojej pubspec.yaml następujące

web: 
    compiler: 
     debug: dartdevC# Use DDC for pub serve 
     release: dartdevC# Use DDC for pub build 

oryginalny:

Odpowiadając na moje własne pytanie, ponieważ mam to działa. Głównym problemem powyżej jest katalog wyjściowy. Jeśli nie określisz katalogu wyjściowego, wydaje się, że nic nie robi. Musisz więc podać nazwę dla katalogu wyjściowego. Obecny katalog najwyraźniej nie działa. Wydaje się, że działa absolutna ścieżka.

Przykłady że praca: dartdevc -o mydir input.dart dartdevc -o /path/to/dir input.dart

przykład, który nie działa: dartdevc -o ./ input.dart

Wyjście na powyższym przykładzie jest:

var person; 
(function(exports) { 
    'use strict'; 
    class Person extends dart.Object { 
    Person(first_name, last_name, amountOfAwesomeness) { 
     if (amountOfAwesomeness === void 0) 
     amountOfAwesomeness = 0; 
     this.first_name = first_name; 
     this.last_name = last_name; 
     this.amountOfAwesomeness = amountOfAwesomeness; 
    } 
    get name() { 
     return `${this.first_name} ${this.last_name} is awesome: ${this.amountOfAwesomeness}`; 
    } 
    } 
    // Exports: 
    exports.Person = Person; 
})(person || (person = {})); 
//# sourceMappingURL=person.js.map 
+0

Po prostu ciekawy, jak wygląda wyjście? – Kasper

+1

Dodałem wyjście do mojej odpowiedzi, nie jestem pewien, w jaki sposób użyłbym tego dokładnie. Skąd się bierze dart.Object? – Rob

+1

pochodzi z: https://github.com/dart-lang/dev_compiler/blob/master/lib/runtime/dart_runtime.js ... ale jest bardzo wcześnie, aby używać dev_compiler. Biblioteki podstawowe nawet nie działają. Po prostu chcę rzucić to oświadczenie. :) – jmesserly

Powiązane problemy