From 9ac84e12e9dce2537e7e9ade6f717ee16e984c94 Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Mon, 4 Oct 2021 09:53:29 -0700 Subject: [PATCH] Added expected type (int) for indexer expressions with ptrs/sized arrays --- IDEHelper/Compiler/BfExprEvaluator.cpp | 2 +- IDEHelper/Tests/src/Arrays.bf | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/IDEHelper/Compiler/BfExprEvaluator.cpp b/IDEHelper/Compiler/BfExprEvaluator.cpp index f42a470b..1abf8306 100644 --- a/IDEHelper/Compiler/BfExprEvaluator.cpp +++ b/IDEHelper/Compiler/BfExprEvaluator.cpp @@ -19603,7 +19603,7 @@ void BfExprEvaluator::Visit(BfIndexerExpression* indexerExpr) bool isUndefIndex = false; - auto indexArgument = mModule->CreateValueFromExpression(indexerExpr->mArguments[0]); + auto indexArgument = mModule->CreateValueFromExpression(indexerExpr->mArguments[0], mModule->GetPrimitiveType(BfTypeCode_IntPtr), BfEvalExprFlags_NoCast); if (!indexArgument) return; if (!indexArgument.mType->IsIntegral()) diff --git a/IDEHelper/Tests/src/Arrays.bf b/IDEHelper/Tests/src/Arrays.bf index 3cac81fc..e0e3b3ef 100644 --- a/IDEHelper/Tests/src/Arrays.bf +++ b/IDEHelper/Tests/src/Arrays.bf @@ -1,3 +1,5 @@ +#pragma warning disable 168 + using System; namespace Tests { @@ -22,6 +24,10 @@ namespace Tests Test.Assert(sa.mB == 22); Test.Assert(sa.mC == 33); + var val = arr[(.)1]; + int[3] arr2 = .(1, 2, 3); + var val2 = arr2[(.)1]; + #if BF_64_BIT /*int a = (int)(void*)&sa - (int)Internal.UnsafeCastToPtr(arr); int b = typeof(System.Array).InstanceSize;