bug fix #324
This commit is contained in:
parent
eccf3682ea
commit
5de8f16023
|
|
@ -1727,7 +1727,7 @@ namespace PascalABCCompiler.Parsers
|
|||
if (!class_generic_table.ContainsKey(class_generic_args[i].Name))
|
||||
class_generic_table.Add(class_generic_args[i].Name, j);
|
||||
if (scope.GenericArgs != null && scope.GenericArgs.Count > j)
|
||||
generic_param_args.Add(class_generic_args[i].Name, scope.GenericArgs[j]);
|
||||
generic_param_args.Add(class_generic_args[i].Name, GetSimpleDescription(scope.DeclaringType.GenericInstances[0]));
|
||||
else if (scope.DeclaringType.TemplateArguments != null && scope.DeclaringType.TemplateArguments.Length > j)
|
||||
generic_param_args.Add(class_generic_args[i].Name, scope.DeclaringType.TemplateArguments[j]);
|
||||
}
|
||||
|
|
@ -1754,9 +1754,9 @@ namespace PascalABCCompiler.Parsers
|
|||
int ind = class_generic_table[tt[i].Name];
|
||||
if (scope.GenericArgs != null && scope.GenericArgs.Count > ind)
|
||||
{
|
||||
sb.Append(scope.GenericArgs[ind]);
|
||||
sb.Append(GetSimpleDescription(scope.DeclaringType.GenericInstances[ind]));
|
||||
if (!generic_param_args.ContainsKey(tt[i].Name))
|
||||
generic_param_args.Add(tt[i].Name, scope.GenericArgs[ind]);
|
||||
generic_param_args.Add(tt[i].Name, GetSimpleDescription(scope.DeclaringType.GenericInstances[ind]));
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
@ -1868,7 +1868,7 @@ namespace PascalABCCompiler.Parsers
|
|||
{
|
||||
if (extensionType != null)
|
||||
{
|
||||
sb.Append(extensionType);
|
||||
sb.Append(extensionType+".");
|
||||
sb.Append(scope.Name);
|
||||
}
|
||||
else
|
||||
|
|
|
|||
9
TestSuite/extensionoperators1.pas
Normal file
9
TestSuite/extensionoperators1.pas
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
begin
|
||||
var seq1 := Range(1, 3)+2;
|
||||
var arr := seq1.ToArray;
|
||||
assert(arr[3] = 2);
|
||||
seq1 := 2+Range(1, 3);
|
||||
assert(seq1.First = 2);
|
||||
seq1 := Range(1, 3)+Range(4, 6);
|
||||
assert(seq1.Last = 6);
|
||||
end.
|
||||
|
|
@ -1101,9 +1101,11 @@ namespace PascalABCCompiler.TreeConverter
|
|||
#endif
|
||||
|
||||
function_node fn = ((function_node)(sic.sym_info));
|
||||
if (convertion_data_and_alghoritms.is_exist_eq_method_in_list(fn, funcs) != null)
|
||||
if (convertion_data_and_alghoritms.is_exist_eq_method_in_list(fn, funcs) == null)
|
||||
{
|
||||
break;
|
||||
//break;
|
||||
funcs.AddElement(fn);
|
||||
|
||||
}
|
||||
funcs.AddElement(fn);
|
||||
sic_last = sic;
|
||||
|
|
|
|||
Loading…
Reference in a new issue