@@ -746,6 +746,53 @@ void indexIntoListUsingIntegerWrapper() {
746
746
assertThat (getAst ().getExitDescriptor ()).isEqualTo ("Ljava/lang/Object" );
747
747
}
748
748
749
+ @ Test // gh-32903
750
+ void indexIntoMapUsingPrimitiveLiteral () {
751
+ Map <Object , String > map = Map .of (
752
+ false , "0" , // BooleanLiteral
753
+ 1 , "ABC" , // IntLiteral
754
+ 2L , "XYZ" , // LongLiteral
755
+ 9.99F , "~10" , // FloatLiteral
756
+ 3.14159 , "PI" // RealLiteral
757
+ );
758
+ context .setVariable ("map" , map );
759
+
760
+ // BooleanLiteral
761
+ expression = parser .parseExpression ("#map[false]" );
762
+ assertThat (expression .getValue (context )).isEqualTo ("0" );
763
+ assertCanCompile (expression );
764
+ assertThat (expression .getValue (context )).isEqualTo ("0" );
765
+ assertThat (getAst ().getExitDescriptor ()).isEqualTo ("Ljava/lang/Object" );
766
+
767
+ // IntLiteral
768
+ expression = parser .parseExpression ("#map[1]" );
769
+ assertThat (expression .getValue (context )).isEqualTo ("ABC" );
770
+ assertCanCompile (expression );
771
+ assertThat (expression .getValue (context )).isEqualTo ("ABC" );
772
+ assertThat (getAst ().getExitDescriptor ()).isEqualTo ("Ljava/lang/Object" );
773
+
774
+ // LongLiteral
775
+ expression = parser .parseExpression ("#map[2L]" );
776
+ assertThat (expression .getValue (context )).isEqualTo ("XYZ" );
777
+ assertCanCompile (expression );
778
+ assertThat (expression .getValue (context )).isEqualTo ("XYZ" );
779
+ assertThat (getAst ().getExitDescriptor ()).isEqualTo ("Ljava/lang/Object" );
780
+
781
+ // FloatLiteral
782
+ expression = parser .parseExpression ("#map[9.99F]" );
783
+ assertThat (expression .getValue (context )).isEqualTo ("~10" );
784
+ assertCanCompile (expression );
785
+ assertThat (expression .getValue (context )).isEqualTo ("~10" );
786
+ assertThat (getAst ().getExitDescriptor ()).isEqualTo ("Ljava/lang/Object" );
787
+
788
+ // RealLiteral
789
+ expression = parser .parseExpression ("#map[3.14159]" );
790
+ assertThat (expression .getValue (context )).isEqualTo ("PI" );
791
+ assertCanCompile (expression );
792
+ assertThat (expression .getValue (context )).isEqualTo ("PI" );
793
+ assertThat (getAst ().getExitDescriptor ()).isEqualTo ("Ljava/lang/Object" );
794
+ }
795
+
749
796
private String stringify (Object object ) {
750
797
Stream <? extends Object > stream ;
751
798
if (object instanceof Collection <?> collection ) {
0 commit comments