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;