return false;
}
+ if (element_type.nullable != target_array_type.element_type.nullable) {
+ return false;
+ }
+
if (element_type.compatible (target_array_type.element_type)
&& target_array_type.element_type.compatible (element_type)) {
return true;
var expr = parse_object_creation_expression (begin, member);
return expr;
} else {
+ bool is_pointer_type = false;
while (accept (TokenType.STAR)) {
+ is_pointer_type = true;
+ }
+ if (!is_pointer_type) {
+ accept (TokenType.INTERR);
}
if (accept (TokenType.OPEN_BRACKET)) {
rollback (begin);
expect (TokenType.NEW);
var member = parse_member_name ();
DataType element_type = UnresolvedType.new_from_expression (member);
+ bool is_pointer_type = false;
while (accept (TokenType.STAR)) {
element_type = new PointerType (element_type, get_src (begin));
+ is_pointer_type = true;
+ }
+ if (!is_pointer_type) {
+ if (accept (TokenType.INTERR)) {
+ element_type.nullable = true;
+ }
}
expect (TokenType.OPEN_BRACKET);