mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-09 03:52:19 +02:00
Fixed method selection when we have append args
This commit is contained in:
parent
9d1b85cceb
commit
39b7309dd5
7 changed files with 19 additions and 9 deletions
|
@ -102,7 +102,7 @@ namespace System
|
||||||
[AllowAppend]
|
[AllowAppend]
|
||||||
public this(String str, int offset)
|
public this(String str, int offset)
|
||||||
{
|
{
|
||||||
Debug.Assert(offset <= str.Length);
|
Debug.Assert((uint)offset <= (uint)str.Length);
|
||||||
let count = str.mLength - offset;
|
let count = str.mLength - offset;
|
||||||
int bufferSize = (count == 0) ? 0 : (count - 1) & ~(sizeof(char8*) - 1);
|
int bufferSize = (count == 0) ? 0 : (count - 1) & ~(sizeof(char8*) - 1);
|
||||||
#unwarn
|
#unwarn
|
||||||
|
|
|
@ -49,7 +49,7 @@ OtherLinkFlags = ""
|
||||||
TargetDirectory = "$(WorkspaceDir)/dist"
|
TargetDirectory = "$(WorkspaceDir)/dist"
|
||||||
TargetName = "BeefIDE_d2"
|
TargetName = "BeefIDE_d2"
|
||||||
OtherLinkFlags = "$(LinkFlags) Comdlg32.lib kernel32.lib user32.lib advapi32.lib shell32.lib IDEHelper64_d.lib BeefySysLib64_d.lib wsock32.lib"
|
OtherLinkFlags = "$(LinkFlags) Comdlg32.lib kernel32.lib user32.lib advapi32.lib shell32.lib IDEHelper64_d.lib BeefySysLib64_d.lib wsock32.lib"
|
||||||
DebugCommandArguments = "-proddir=C:\\Beef\\ide\\mintest"
|
DebugCommandArguments = "-workspace=c:\\beef\\ide\\mintest"
|
||||||
DebugWorkingDirectory = "$(ProjectDir)\\dist"
|
DebugWorkingDirectory = "$(ProjectDir)\\dist"
|
||||||
EnvironmentVars = ["_NO_DEBUG_HEAP=1"]
|
EnvironmentVars = ["_NO_DEBUG_HEAP=1"]
|
||||||
|
|
||||||
|
|
|
@ -49,6 +49,7 @@ struct Blurg
|
||||||
StructA sa = .();
|
StructA sa = .();
|
||||||
sa.mA = 123
|
sa.mA = 123
|
||||||
|
|
||||||
|
|
||||||
return (int32)123;
|
return (int32)123;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,11 +17,6 @@ namespace IDE
|
||||||
//System.Collections.Generic.List<System.String> list;
|
//System.Collections.Generic.List<System.String> list;
|
||||||
static int32 Main(String[] args)
|
static int32 Main(String[] args)
|
||||||
{
|
{
|
||||||
/*if ((var str = scope String()) || (var str2 = scope String()))
|
|
||||||
{
|
|
||||||
|
|
||||||
}*/
|
|
||||||
//Test.Test();
|
|
||||||
#if SMALLTEST
|
#if SMALLTEST
|
||||||
Debug.WriteLine("Hey!\n");
|
Debug.WriteLine("Hey!\n");
|
||||||
#else
|
#else
|
||||||
|
|
|
@ -1535,8 +1535,8 @@ NoMatch:
|
||||||
|
|
||||||
if (mBackupMethodDef != NULL)
|
if (mBackupMethodDef != NULL)
|
||||||
{
|
{
|
||||||
int prevParamDiff = (int)mBackupMethodDef->mParams.size() - (int)mArguments.size();
|
int prevParamDiff = (int)mBackupMethodDef->GetExplicitParamCount() - (int)mArguments.size();
|
||||||
int paramDiff = (int)checkMethod->mParams.size() - (int)mArguments.size();
|
int paramDiff = (int)checkMethod->GetExplicitParamCount() - (int)mArguments.size();
|
||||||
if ((prevParamDiff < 0) && (prevParamDiff > paramDiff))
|
if ((prevParamDiff < 0) && (prevParamDiff > paramDiff))
|
||||||
return false;
|
return false;
|
||||||
if ((prevParamDiff >= 0) && ((paramDiff < 0) || (prevParamDiff < paramDiff)))
|
if ((prevParamDiff >= 0) && ((paramDiff < 0) || (prevParamDiff < paramDiff)))
|
||||||
|
|
|
@ -571,6 +571,19 @@ String BfMethodDef::ToString()
|
||||||
return methodText;
|
return methodText;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int BfMethodDef::GetExplicitParamCount()
|
||||||
|
{
|
||||||
|
for (int i = 0; i < (int)mParams.size(); i++)
|
||||||
|
{
|
||||||
|
auto param = mParams[i];
|
||||||
|
if ((param->mParamKind != BfParamKind_AppendIdx) &&
|
||||||
|
(param->mParamKind != BfParamKind_ImplicitCapture))
|
||||||
|
return (int)mParams.size() - i;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (int)mParams.size();
|
||||||
|
}
|
||||||
|
|
||||||
///
|
///
|
||||||
|
|
||||||
void BfTypeDef::Reset()
|
void BfTypeDef::Reset()
|
||||||
|
|
|
@ -772,6 +772,7 @@ public:
|
||||||
bool IsEmptyPartial();
|
bool IsEmptyPartial();
|
||||||
bool IsDefaultCtor();
|
bool IsDefaultCtor();
|
||||||
String ToString();
|
String ToString();
|
||||||
|
int GetExplicitParamCount();
|
||||||
};
|
};
|
||||||
|
|
||||||
class BfOperatorDef : public BfMethodDef
|
class BfOperatorDef : public BfMethodDef
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue