2015-03-09 23 views
6

Volevo sperimentare utilizzando il compilatore Dart dev che genera ES6. Ho installatoQualcuno ha ottenuto che Dart dev_compiler funzioni?

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

Poi ho creato una semplice classe 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"; 
} 

Poi ho provato a compilarlo:

dartdev -o ./ person.dart 

ma ottengo un'eccezione:

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) 

Sembra un semplice esempio come questo d lavoro. Che cosa sto facendo di sbagliato? Il dev_compiler non è ancora pronto per essere provato?

+1

Il ddc è super duper mega precoce. Meglio trovare i bug qui: https://github.com/dart-lang/dev_compiler/issues –

risposta

7

UPDATE:

Lo sviluppo dardo compilatore si sta costruendo in pub a Dart versione 1.24. Vedi qui https://github.com/dart-lang/sdk/blob/master/CHANGELOG.md#tool-changes-1

Se si desidera utilizzarlo, basta usare Dart 1,24 e aggiungere alla vostra pubspec.yaml seguente

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

ORIGINALE:

Rispondendo alla mia domanda proprio da quando ho capito di lavoro. Il problema principale sopra è la directory di output. Se non si specifica una directory di output, sembra che non faccia nulla. Quindi è necessario specificare un nome per la directory di output. Apparentemente la directory corrente non funziona. Un percorso assoluto sembra funzionare.

Esempi che funzionano: dartdevc -o mydir input.dart dartdevc -o /path/to/dir input.dart

esempio che non funziona: dartdevc -o ./ input.dart

L'output per l'esempio di cui sopra è:

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

Solo curioso, com'è l'output? – Kasper

+1

Aggiunto l'output alla mia risposta, non sono sicuro di come lo userei esattamente. Da dove proviene dart.Object, ad esempio? – Rob

+1

proviene da: https://github.com/dart-lang/dev_compiler/blob/master/lib/runtime/dart_runtime.js ... ma è molto presto per usare dev_compiler. Le librerie di base non funzionano nemmeno. Voglio solo lanciare quel disclaimer là fuori. :) – jmesserly

Problemi correlati