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))
|
if (!class_generic_table.ContainsKey(class_generic_args[i].Name))
|
||||||
class_generic_table.Add(class_generic_args[i].Name, j);
|
class_generic_table.Add(class_generic_args[i].Name, j);
|
||||||
if (scope.GenericArgs != null && scope.GenericArgs.Count > 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)
|
else if (scope.DeclaringType.TemplateArguments != null && scope.DeclaringType.TemplateArguments.Length > j)
|
||||||
generic_param_args.Add(class_generic_args[i].Name, scope.DeclaringType.TemplateArguments[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];
|
int ind = class_generic_table[tt[i].Name];
|
||||||
if (scope.GenericArgs != null && scope.GenericArgs.Count > ind)
|
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))
|
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
|
else
|
||||||
|
|
@ -1868,7 +1868,7 @@ namespace PascalABCCompiler.Parsers
|
||||||
{
|
{
|
||||||
if (extensionType != null)
|
if (extensionType != null)
|
||||||
{
|
{
|
||||||
sb.Append(extensionType);
|
sb.Append(extensionType+".");
|
||||||
sb.Append(scope.Name);
|
sb.Append(scope.Name);
|
||||||
}
|
}
|
||||||
else
|
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
|
#endif
|
||||||
|
|
||||||
function_node fn = ((function_node)(sic.sym_info));
|
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);
|
funcs.AddElement(fn);
|
||||||
sic_last = sic;
|
sic_last = sic;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue