2015-03-09 15 views
6

ES6 üreten Dart dev derleyicisini kullanmayı denemek istedim. SonraDart dev_compiler'i işe almak isteyen var mı?

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"; 
} 

bunu derlemek için çalıştı: Ben

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

Sonra basit Dart sınıf oluşturulmuş yüklü

dartdev -o ./ person.dart 

ama bir istisna olsun:

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) 

Bu shoul gibi basit bir örnek gibi görünüyor d iş. Neyi yanlış yapıyorum? Dev_compiler henüz denemeye hazır değil mi?

+1

ddc, süper duper mega erkendir. Burada hatalar yazmak için en iyisi: https://github.com/dart-lang/dev_compiler/issues –

cevap

7

GÜNCELLEME:

dart geliştirme derleyici Dart sürümü 1.24 yılında pub içine inşa ediliyor. Ben o çalışma var beri kendi sorumu yanıtlayan

: Bunu kullanmak istiyorsanız, sadece Dart 1.24 kullanabilir ve

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

ORİJİNAL izleyerek pubspec.yaml eklemek burada https://github.com/dart-lang/sdk/blob/master/CHANGELOG.md#tool-changes-1

bakınız. Yukarıdaki ana sorun çıktı dizini. Bir çıkış dizini belirtmezseniz, hiçbir şey yapmazsınız. Bu yüzden çıkış dizini için bir isim belirtmelisiniz. Geçerli dizin görünüşte çalışmıyor. Mutlak bir yol işe yarıyor gibi görünüyor. işe

Örnekler: çalışmıyor dartdevc -o mydir input.dart dartdevc -o /path/to/dir input.dart

Örnek: dartdevc -o ./ input.dart

Yukarıdaki örneğin çıktısı:

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

Sadece merak, çıktı nasıl görünüyor? – Kasper

+1

Çıktıyı yanıtıma ekledim, bunu tam olarak nasıl kullandığımı bilmiyorum. Dart.Object örneğin nereden geliyor? – Rob

+1

dan geliyor: https://github.com/dart-lang/dev_compiler/blob/master/lib/runtime/dart_runtime.js ... ama dev_compiler kullanmak için süper erken. Çekirdek kütüphaneler bile çalışmıyor. Sadece o feragatnameyi oraya atmak istiyorum. :) – jmesserly

İlgili konular