1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-08 11:38:21 +02:00

Fixed typealias dependencies

This commit is contained in:
Brian Fiete 2019-11-27 08:02:15 -08:00
parent 19c34255df
commit 38dd2cc183
7 changed files with 100 additions and 47 deletions

View file

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

View file

@ -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
{ {
@ -59,4 +33,4 @@ class TestA
1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 +
1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1; 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1;
} }
}*/ }*/

View file

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

View file

@ -143,22 +143,67 @@ 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;
if (tup case (1, var ref aa))
{
aa += 100;
}
String str = new:gCRTAlloc String(a); /*EnumB eb = .B(1, 2);
delete:gCRTAlloc str; if (eb case .B(1, var ref bb))
{
}*/
return 123; return 123;
} }

View file

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

View file

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

View file

@ -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,13 +818,17 @@ 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 (outEndNode != NULL) if ((parenDepth == 0) && (successToken != BfToken_RParen))
*outEndNode = checkIdx; {
if (successToken == BfToken_None) if (outEndNode != NULL)
return chevronDepth == 0; *outEndNode = checkIdx;
return false; if (successToken == BfToken_None)
return chevronDepth == 0;
return false;
}
hadUnexpectedIdentifier = true;
} }
hadIdentifier = true; hadIdentifier = true;
@ -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));
} }