bug fix #648
This commit is contained in:
parent
9ee420d9e6
commit
28a64634ae
13
TestSuite/extensionmethods26.pas
Normal file
13
TestSuite/extensionmethods26.pas
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
begin
|
||||
var a:array of char;
|
||||
a := Arr('A','B','C');
|
||||
var b := a + 'D';//'D' is char
|
||||
assert(b.First = 'A');
|
||||
assert(b is IEnumerable<char>);
|
||||
var c := a + 'DE';//'DE' is string
|
||||
assert(c is IEnumerable<char>);
|
||||
assert(c.Last = 'E');
|
||||
var e := 'D' + a;
|
||||
assert(e is IEnumerable<char>);
|
||||
assert(e.Last = 'C');
|
||||
end.
|
||||
|
|
@ -1088,6 +1088,8 @@ namespace PascalABCCompiler.TreeConverter
|
|||
}
|
||||
}
|
||||
}
|
||||
if (name == "+" && right_type == SystemLibrary.SystemLibrary.char_type && left_type != SystemLibrary.SystemLibrary.string_type)
|
||||
no_search_in_extension_methods = false;
|
||||
SymbolInfoList sil = left_type.find_in_type(name, left_type.Scope, no_search_in_extension_methods);
|
||||
int added_symbols = -1;
|
||||
SymbolInfoList sil2 = null;
|
||||
|
|
@ -1096,6 +1098,8 @@ namespace PascalABCCompiler.TreeConverter
|
|||
//SymbolInfo si2 = right_type.find(name, context.CurrentScope);
|
||||
if (sil != null)
|
||||
sil = sil.copy();
|
||||
if (name == "+" && right_type != SystemLibrary.SystemLibrary.string_type && left_type == SystemLibrary.SystemLibrary.char_type)
|
||||
no_search_in_extension_methods = false;
|
||||
sil2 = right_type.find_in_type(name, right_type.Scope, no_search_in_extension_methods);
|
||||
if ((sil != null) && (sil2 != null))
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in a new issue