mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-08 19:48:20 +02:00
Fixed typealias dependencies
This commit is contained in:
parent
19c34255df
commit
38dd2cc183
7 changed files with 100 additions and 47 deletions
|
@ -15,7 +15,11 @@ namespace System
|
||||||
void Print(String outString);
|
void Print(String outString);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if BF_LARGE_COLLECTIONS
|
||||||
|
typealias int_cosize = int64;
|
||||||
|
#else
|
||||||
typealias int_cosize = int32;
|
typealias int_cosize = int32;
|
||||||
|
#endif
|
||||||
|
|
||||||
[AlwaysInclude]
|
[AlwaysInclude]
|
||||||
static class CompilerSettings
|
static class CompilerSettings
|
||||||
|
|
|
@ -1,35 +1,9 @@
|
||||||
using System;
|
using System;
|
||||||
// Zapples
|
// Zapples
|
||||||
|
|
||||||
struct StructA<T>
|
|
||||||
{
|
|
||||||
public T mVal;
|
|
||||||
|
|
||||||
public static bool operator< <TOther>(StructA<T> lhs, TOther rhs) where bool : operator T < TOther
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*public static TResult operator+<TOther, TResult>(StructA<T> lhs, TOther rhs)
|
|
||||||
where TResult = operator T * TOther
|
|
||||||
{
|
|
||||||
return lhs.mVal * rhs;
|
|
||||||
}*/
|
|
||||||
}
|
|
||||||
|
|
||||||
class TestA
|
|
||||||
{
|
|
||||||
|
|
||||||
|
|
||||||
public void Bloop()
|
|
||||||
{
|
|
||||||
StructA<float> sa;
|
|
||||||
sa.mVal = 1.23f;
|
|
||||||
let res = sa < 100;
|
|
||||||
|
|
||||||
int a = 1 * 2;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*class Mintest2
|
/*class Mintest2
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,9 +1,24 @@
|
||||||
class Snorf
|
using System;
|
||||||
{
|
|
||||||
int mA;
|
|
||||||
|
|
||||||
struct Bloog
|
#define SMz
|
||||||
|
|
||||||
|
#if SM
|
||||||
|
typealias int_test = int32;
|
||||||
|
#else
|
||||||
|
typealias int_test = int64;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
struct Floof
|
||||||
|
{
|
||||||
|
public static int32 Hey()
|
||||||
{
|
{
|
||||||
int mA;
|
Result<int> res = 123;
|
||||||
|
switch (res)
|
||||||
|
{
|
||||||
|
case .Ok(let val):
|
||||||
|
default:
|
||||||
|
}
|
||||||
|
|
||||||
|
return 123;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -143,21 +143,66 @@ struct Blurg
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static mixin ScopedAlloc(int size, int align)
|
||||||
|
{
|
||||||
|
//(void*)scope:mixin [Align(align)] uint8[size]* { ? }
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void TestAlloc()
|
||||||
|
{
|
||||||
|
int i = 1;
|
||||||
|
if (i == 1)
|
||||||
|
{
|
||||||
|
int size = 128;
|
||||||
|
scope:: int[size]*;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
struct StructA
|
||||||
|
{
|
||||||
|
public int[10] mA;
|
||||||
|
}
|
||||||
|
|
||||||
|
enum EnumA
|
||||||
|
{
|
||||||
|
case None;
|
||||||
|
case A(StructA sa);
|
||||||
|
}
|
||||||
|
|
||||||
|
enum EnumB
|
||||||
|
{
|
||||||
|
case A;
|
||||||
|
case B(int a, int b);
|
||||||
|
}
|
||||||
|
|
||||||
public static int32 Hey()
|
public static int32 Hey()
|
||||||
{
|
{
|
||||||
TypeCode tc = .Boolean;
|
//int_test val = 123;
|
||||||
//int h = GetHash(tc);
|
|
||||||
|
|
||||||
var val = tc.Underlying;
|
(int, int) tup = (1, 3);
|
||||||
var valRef = ref tc.UnderlyingRef;
|
|
||||||
|
|
||||||
let maxVal = typeof(TypeCode).MaxValue;
|
switch (tup)
|
||||||
|
{
|
||||||
|
case (1, var ref a):
|
||||||
|
a++;
|
||||||
|
PrintF("A\n");
|
||||||
|
default:
|
||||||
|
PrintF("B\n");
|
||||||
|
}
|
||||||
|
|
||||||
int a = 100;
|
|
||||||
|
|
||||||
String str = new:gCRTAlloc String(a);
|
if (tup case (1, var ref aa))
|
||||||
|
{
|
||||||
|
aa += 100;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*EnumB eb = .B(1, 2);
|
||||||
|
|
||||||
|
if (eb case .B(1, var ref bb))
|
||||||
|
{
|
||||||
|
|
||||||
|
}*/
|
||||||
|
|
||||||
delete:gCRTAlloc str;
|
|
||||||
|
|
||||||
|
|
||||||
return 123;
|
return 123;
|
||||||
|
|
|
@ -1000,6 +1000,7 @@ public:
|
||||||
//mParent = NULL;
|
//mParent = NULL;
|
||||||
mTriviaStart = -1;
|
mTriviaStart = -1;
|
||||||
mSrcStart = 0x7FFFFFFF;
|
mSrcStart = 0x7FFFFFFF;
|
||||||
|
mSrcEnd = 0;
|
||||||
//mSrcEnd = 0;
|
//mSrcEnd = 0;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
|
@ -1090,7 +1090,8 @@ void BfContext::TypeDataChanged(BfDependedType* dType, bool isNonStaticDataChang
|
||||||
bool hadChange = false;
|
bool hadChange = false;
|
||||||
|
|
||||||
if ((dependencyFlags & BfDependencyMap::DependencyFlag_DerivedFrom) ||
|
if ((dependencyFlags & BfDependencyMap::DependencyFlag_DerivedFrom) ||
|
||||||
(dependencyFlags & BfDependencyMap::DependencyFlag_ValueTypeMemberData))
|
(dependencyFlags & BfDependencyMap::DependencyFlag_ValueTypeMemberData) ||
|
||||||
|
(dependencyFlags & BfDependencyMap::DependencyFlag_NameReference))
|
||||||
{
|
{
|
||||||
hadChange = true;
|
hadChange = true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -367,6 +367,7 @@ bool BfReducer::IsTypeReference(BfAstNode* checkNode, BfToken successToken, int*
|
||||||
bool hadTupleComma = false;
|
bool hadTupleComma = false;
|
||||||
bool hadIdentifier = false;
|
bool hadIdentifier = false;
|
||||||
bool foundSuccessToken = false;
|
bool foundSuccessToken = false;
|
||||||
|
bool hadUnexpectedIdentifier = false;
|
||||||
BfTokenNode* lastToken = NULL;
|
BfTokenNode* lastToken = NULL;
|
||||||
//while (checkNode != NULL)
|
//while (checkNode != NULL)
|
||||||
|
|
||||||
|
@ -425,6 +426,12 @@ bool BfReducer::IsTypeReference(BfAstNode* checkNode, BfToken successToken, int*
|
||||||
success = (chevronDepth == 0) && (bracketDepth == 0) && (parenDepth == 0);
|
success = (chevronDepth == 0) && (bracketDepth == 0) && (parenDepth == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((success) || (doEnding))
|
||||||
|
{
|
||||||
|
if ((!hadTupleComma) && (hadUnexpectedIdentifier)) // Looked like a tuple but wasn't
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if (success)
|
if (success)
|
||||||
{
|
{
|
||||||
if (outEndNode != NULL)
|
if (outEndNode != NULL)
|
||||||
|
@ -811,7 +818,9 @@ bool BfReducer::IsTypeReference(BfAstNode* checkNode, BfToken successToken, int*
|
||||||
// Identifier is always allowed in tuple (parenDepth == 0), because it's potentially the field name
|
// Identifier is always allowed in tuple (parenDepth == 0), because it's potentially the field name
|
||||||
// (successToken == BfToken_RParen) infers we are already checking inside parentheses, such as
|
// (successToken == BfToken_RParen) infers we are already checking inside parentheses, such as
|
||||||
// when we see a potential cast expression
|
// when we see a potential cast expression
|
||||||
if ((!identifierExpected) && (parenDepth == 0) && (successToken != BfToken_RParen))
|
if (!identifierExpected)
|
||||||
|
{
|
||||||
|
if ((parenDepth == 0) && (successToken != BfToken_RParen))
|
||||||
{
|
{
|
||||||
if (outEndNode != NULL)
|
if (outEndNode != NULL)
|
||||||
*outEndNode = checkIdx;
|
*outEndNode = checkIdx;
|
||||||
|
@ -819,6 +828,8 @@ bool BfReducer::IsTypeReference(BfAstNode* checkNode, BfToken successToken, int*
|
||||||
return chevronDepth == 0;
|
return chevronDepth == 0;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
hadUnexpectedIdentifier = true;
|
||||||
|
}
|
||||||
|
|
||||||
hadIdentifier = true;
|
hadIdentifier = true;
|
||||||
identifierExpected = false;
|
identifierExpected = false;
|
||||||
|
@ -847,6 +858,8 @@ bool BfReducer::IsTypeReference(BfAstNode* checkNode, BfToken successToken, int*
|
||||||
}
|
}
|
||||||
if (outEndNode != NULL)
|
if (outEndNode != NULL)
|
||||||
*outEndNode = checkIdx;
|
*outEndNode = checkIdx;
|
||||||
|
if ((!hadTupleComma) && (hadUnexpectedIdentifier)) // Looked like a tuple but wasn't
|
||||||
|
return false;
|
||||||
return (hadIdentifier) && (chevronDepth == 0) && (bracketDepth == 0) && (parenDepth == 0) && ((successToken == BfToken_None) || (foundSuccessToken));
|
return (hadIdentifier) && (chevronDepth == 0) && (bracketDepth == 0) && (parenDepth == 0) && ((successToken == BfToken_None) || (foundSuccessToken));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue