}
public override Symbol? get_member (string member_name) {
- if (member_name == "length") {
+ if (CodeContext.get ().profile == Profile.DOVA) {
+ return SemanticAnalyzer.symbol_lookup_inherited (CodeContext.get ().root.scope.lookup ("Dova").scope.lookup ("Array"), member_name);
+ } else if (member_name == "length") {
return get_length_field ();
} else if (member_name == "move") {
return get_move_method ();
if (inline_allocated) {
return element_type.get_cname ();
} else {
- return element_type.get_cname () + "*";
+ if (CodeContext.get ().profile == Profile.DOVA) {
+ return "DovaArray*";
+ } else {
+ return element_type.get_cname () + "*";
+ }
}
}
instance_type = instance_pointer_type.base_type;
}
+ if (CodeContext.get ().profile == Profile.DOVA) {
+ while (instance_type is ArrayType) {
+ var instance_array_type = (ArrayType) instance_type;
+ instance_type = new ObjectType ((Class) CodeContext.get ().root.scope.lookup ("Dova").scope.lookup ("Array"));
+ instance_type.add_type_argument (instance_array_type.element_type);
+ }
+ }
+
if (instance_type.data_type == type_symbol) {
return instance_type;
}