return instance_base_type;
}
- internal static DataType? get_instance_base_type_for_member (DataType derived_instance_type, TypeSymbol type_symbol, CodeNode node_reference) {
+ internal static DataType? get_instance_base_type_for_member (DataType derived_instance_type, TypeSymbol type_symbol, CodeNode? node_reference) {
DataType instance_type = derived_instance_type;
while (instance_type is PointerType) {
return null;
}
- public static DataType get_actual_type (DataType? derived_instance_type, List<DataType>? method_type_arguments, GenericType generic_type, CodeNode node_reference) {
+ public static DataType get_actual_type (DataType? derived_instance_type, List<DataType>? method_type_arguments, GenericType generic_type, CodeNode? node_reference) {
DataType actual_type = null;
if (generic_type.type_parameter.parent_symbol is TypeSymbol) {
if (derived_instance_type != null) {
var instance_type = get_instance_base_type_for_member (derived_instance_type, (TypeSymbol) generic_type.type_parameter.parent_symbol, node_reference);
if (instance_type == null) {
- CodeNode? reference = get_symbol_for_data_type (derived_instance_type);
- Report.error ((reference ?? node_reference).source_reference, "The type-parameter `%s' is missing".printf (generic_type.to_string ()));
- node_reference.error = true;
+ if (node_reference != null) {
+ CodeNode? reference = get_symbol_for_data_type (derived_instance_type);
+ Report.error ((reference ?? node_reference).source_reference, "The type-parameter `%s' is missing".printf (generic_type.to_string ()));
+ node_reference.error = true;
+ }
return new InvalidType ();
}
param_index = instance_type.data_type.get_type_parameter_index (generic_type.type_parameter.name);
}
if (param_index == -1) {
- Report.error (node_reference.source_reference, "internal error: unknown type parameter %s".printf (generic_type.type_parameter.name));
- node_reference.error = true;
+ if (node_reference != null) {
+ Report.error (node_reference.source_reference, "internal error: unknown type parameter %s".printf (generic_type.type_parameter.name));
+ node_reference.error = true;
+ }
return new InvalidType ();
}
int param_index = m.get_type_parameter_index (generic_type.type_parameter.name);
if (param_index == -1) {
- Report.error (node_reference.source_reference, "internal error: unknown type parameter %s".printf (generic_type.type_parameter.name));
- node_reference.error = true;
+ if (node_reference != null) {
+ Report.error (node_reference.source_reference, "internal error: unknown type parameter %s".printf (generic_type.type_parameter.name));
+ node_reference.error = true;
+ }
return new InvalidType ();
}