@@ -5543,6 +5543,10 @@ fn trans_expr(&@block_ctxt cx, &@ast::expr e) -> result {
5543
5543
ret trans_recv( cx, lhs, rhs, ann) ;
5544
5544
}
5545
5545
5546
+ case ( ast:: expr_spawn( ?dom, ?name, ?func, ?args, ?ann) ) {
5547
+ ret trans_spawn( dom, name, func, args, ann) ;
5548
+ }
5549
+
5546
5550
case ( _) {
5547
5551
// The expression is an lvalue. Fall through.
5548
5552
}
@@ -5879,9 +5883,45 @@ fn trans_chan(&@block_ctxt cx, &@ast::expr e, &ast::ann ann) -> result {
5879
5883
ret res( bcx, chan_val) ;
5880
5884
}
5881
5885
5886
+ fn trans_spawn( & ast:: spawn_dom dom, & option:: t[ str] name,
5887
+ & @ast:: expr func, & vec[ @ast:: expr] args,
5888
+ & ast:: ann ann) -> result {
5889
+ // Make the task name
5890
+ auto tname = alt( name) {
5891
+ case( none) {
5892
+ auto argss = vec:: map( common:: expr_to_str, args) ;
5893
+ #fmt( "%s(%s)" ,
5894
+ common:: expr_to_str( func) ,
5895
+ str:: connect( argss, ", " ) )
5896
+ }
5897
+ case( some[ str] ( ?n) ) {
5898
+ n
5899
+ }
5900
+ } ;
5901
+
5902
+ // dump a bunch of information
5903
+ log_err "Spawn" ;
5904
+ //log_err dom;
5905
+ log_err #fmt( "task name: %s" , tname) ;
5906
+
5907
+ // Generate code
5908
+ alt( dom) {
5909
+ case( ast:: dom_implicit) {
5910
+ // TODO
5911
+ log_err "Spawning implicit domain tasks is not implemented." ;
5912
+ fail;
5913
+ }
5914
+
5915
+ case( ast:: dom_thread) {
5916
+ // TODO
5917
+ log_err "Spawining new thread tasks is not implemented." ;
5918
+ fail;
5919
+ }
5920
+ }
5921
+ }
5922
+
5882
5923
fn trans_send( & @block_ctxt cx, & @ast:: expr lhs, & @ast:: expr rhs,
5883
5924
& ast:: ann ann) -> result {
5884
-
5885
5925
auto bcx = cx;
5886
5926
auto chn = trans_expr( bcx, lhs) ;
5887
5927
bcx = chn. bcx;
0 commit comments