This commit is contained in:
Бондарев Иван 2016-12-22 23:15:20 +01:00
parent eccf3682ea
commit 5de8f16023
3 changed files with 17 additions and 6 deletions

View file

@ -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

View 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.

View file

@ -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;