1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-09 03:52:19 +02:00

More changes for nullable(T)

This commit is contained in:
Brian Fiete 2020-04-27 15:15:47 -07:00
parent 68bf7bc801
commit 966b886fcc
2 changed files with 26 additions and 2 deletions

View file

@ -246,7 +246,7 @@ void BfStructuralVisitor::Visit(BfRefTypeRef* typeRef)
Visit(typeRef->ToBase()); Visit(typeRef->ToBase());
} }
void BfStructuralVisitor::Visit(BfRetTypeTypeRef* typeRef) void BfStructuralVisitor::Visit(BfModifiedTypeRef* typeRef)
{ {
Visit(typeRef->ToBase()); Visit(typeRef->ToBase());
} }
@ -1309,6 +1309,8 @@ const char* Beefy::BfTokenToString(BfToken token)
return "new"; return "new";
case BfToken_Null: case BfToken_Null:
return "null"; return "null";
case BfToken_Nullable:
return "nullable";
case BfToken_Operator: case BfToken_Operator:
return "operator"; return "operator";
case BfToken_Out: case BfToken_Out:
@ -1618,6 +1620,7 @@ const char* Beefy::BfGetOpName(BfUnaryOp unaryOp)
case BfUnaryOp_Decrement: return "--"; case BfUnaryOp_Decrement: return "--";
case BfUnaryOp_PostIncrement: return "++"; case BfUnaryOp_PostIncrement: return "++";
case BfUnaryOp_PostDecrement: return "--"; case BfUnaryOp_PostDecrement: return "--";
case BfUnaryOp_NullConditional: return "?";
case BfUnaryOp_Ref: return "ref"; case BfUnaryOp_Ref: return "ref";
case BfUnaryOp_Out: return "out"; case BfUnaryOp_Out: return "out";
case BfUnaryOp_Mut: return "mut"; case BfUnaryOp_Mut: return "mut";
@ -1695,6 +1698,8 @@ BfUnaryOp Beefy::BfTokenToUnaryOp(BfToken token)
return BfUnaryOp_Increment; return BfUnaryOp_Increment;
case BfToken_DblMinus: case BfToken_DblMinus:
return BfUnaryOp_Decrement; return BfUnaryOp_Decrement;
case BfToken_Question:
return BfUnaryOp_NullConditional;
case BfToken_Ref: case BfToken_Ref:
return BfUnaryOp_Ref; return BfUnaryOp_Ref;
case BfToken_Mut: case BfToken_Mut:
@ -1708,6 +1713,25 @@ BfUnaryOp Beefy::BfTokenToUnaryOp(BfToken token)
} }
} }
bool Beefy::BfCanOverloadOperator(BfUnaryOp unaryOp)
{
switch (unaryOp)
{
case BfUnaryOp_Negate:
case BfUnaryOp_Not:
case BfUnaryOp_Positive:
case BfUnaryOp_InvertBits:
case BfUnaryOp_Increment:
case BfUnaryOp_Decrement:
case BfUnaryOp_PostIncrement:
case BfUnaryOp_PostDecrement:
case BfUnaryOp_NullConditional:
return true;
default:
return false;
}
}
BfAssignmentOp Beefy::BfTokenToAssignmentOp(BfToken token) BfAssignmentOp Beefy::BfTokenToAssignmentOp(BfToken token)
{ {

View file

@ -985,7 +985,7 @@ void BfModule::FinishInit()
} }
mBfIRBuilder->Module_AddModuleFlag("Debug Info Version", 3); mBfIRBuilder->Module_AddModuleFlag("Debug Info Version", 3);
mDICompileUnit = mBfIRBuilder->DbgCreateCompileUnit(llvm::dwarf::DW_LANG_C_plus_plus, mModuleName, ".", "Beef Compiler 0.42.2", /*moduleOptions.mOptLevel > 0*/false, "", 0, !mHasFullDebugInfo); mDICompileUnit = mBfIRBuilder->DbgCreateCompileUnit(llvm::dwarf::DW_LANG_C_plus_plus, mModuleName, ".", "Beef Compiler 0.42.3", /*moduleOptions.mOptLevel > 0*/false, "", 0, !mHasFullDebugInfo);
} }
mAwaitingInitFinish = false; mAwaitingInitFinish = false;