1
0
Fork 0
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:
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);
}
#if BF_LARGE_COLLECTIONS
typealias int_cosize = int64;
#else
typealias int_cosize = int32;
#endif
[AlwaysInclude]
static class CompilerSettings

View file

@ -1,35 +1,9 @@
using System;
// 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
{

View file

@ -1,9 +1,24 @@
class Snorf
{
int mA;
using System;
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,21 +143,66 @@ struct Blurg
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()
{
TypeCode tc = .Boolean;
//int h = GetHash(tc);
//int_test val = 123;
var val = tc.Underlying;
var valRef = ref tc.UnderlyingRef;
(int, int) tup = (1, 3);
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;

View file

@ -1000,6 +1000,7 @@ public:
//mParent = NULL;
mTriviaStart = -1;
mSrcStart = 0x7FFFFFFF;
mSrcEnd = 0;
//mSrcEnd = 0;
#endif
}

View file

@ -1090,7 +1090,8 @@ void BfContext::TypeDataChanged(BfDependedType* dType, bool isNonStaticDataChang
bool hadChange = false;
if ((dependencyFlags & BfDependencyMap::DependencyFlag_DerivedFrom) ||
(dependencyFlags & BfDependencyMap::DependencyFlag_ValueTypeMemberData))
(dependencyFlags & BfDependencyMap::DependencyFlag_ValueTypeMemberData) ||
(dependencyFlags & BfDependencyMap::DependencyFlag_NameReference))
{
hadChange = true;
}

View file

@ -367,6 +367,7 @@ bool BfReducer::IsTypeReference(BfAstNode* checkNode, BfToken successToken, int*
bool hadTupleComma = false;
bool hadIdentifier = false;
bool foundSuccessToken = false;
bool hadUnexpectedIdentifier = false;
BfTokenNode* lastToken = NULL;
//while (checkNode != NULL)
@ -425,6 +426,12 @@ bool BfReducer::IsTypeReference(BfAstNode* checkNode, BfToken successToken, int*
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 (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
// (successToken == BfToken_RParen) infers we are already checking inside parentheses, such as
// 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)
*outEndNode = checkIdx;
@ -819,6 +828,8 @@ bool BfReducer::IsTypeReference(BfAstNode* checkNode, BfToken successToken, int*
return chevronDepth == 0;
return false;
}
hadUnexpectedIdentifier = true;
}
hadIdentifier = true;
identifierExpected = false;
@ -847,6 +858,8 @@ bool BfReducer::IsTypeReference(BfAstNode* checkNode, BfToken successToken, int*
}
if (outEndNode != NULL)
*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));
}