// Add cast for narrowed type access of variables if needed
if (expr.symbol_reference is Variable) {
unowned GLibValue cvalue = (GLibValue) expr.target_value;
- if (cvalue.value_type.type_symbol != expr.value_type.type_symbol) {
+ if (cvalue.value_type.type_symbol != null && cvalue.value_type.type_symbol != expr.value_type.type_symbol) {
cvalue.cvalue = new CCodeCastExpression (cvalue.cvalue, get_ccode_name (expr.value_type));
}
}
}
void main () {
- foo<string> ("foo");
- bar<string> (new Bar<string> ("bar"));
+ {
+ foo<string> ("foo");
+ }
+ {
+ bar<string> (new Bar<string> ("bar"));
+ }
+ {
+ var bar = new Bar<string> ("bar");
+ var t = (owned) bar.g;
+ assert (bar.g == null);
+ assert (t == "bar");
+ }
}