Index: runtime/vm/class_finalizer.cc |
=================================================================== |
--- runtime/vm/class_finalizer.cc (revision 29679) |
+++ runtime/vm/class_finalizer.cc (working copy) |
@@ -1218,6 +1218,19 @@ |
getter.set_result_type(type); |
cls.AddFunction(getter); |
field.set_value(Instance::Handle(Object::sentinel().raw())); |
+ |
+ // Create initializer function. |
+ // We don't have the start position of the initializer expression |
+ // here, but can compute it from the field identifier position: |
+ // The initializer expression starts after the assignment token at +2. |
+ const intptr_t initializer_pos = field.token_pos() + 2; |
hausner
2013/10/31 21:53:47
The + 2 is incorrect. The token position is a byte
Florian Schneider
2013/11/01 10:23:42
Oops, yes that will go wrong. I'll fix it. I think
|
+ const Function& init_function = Function::ZoneHandle( |
+ Function::NewStaticInitializer( |
+ String::Handle(field.name()), |
+ type, |
+ cls, |
+ initializer_pos)); |
+ cls.AddFunction(init_function); |
} |
} |
} |