@@ -641,4 +641,158 @@ public void testStringCasts() {
641641 expectScriptThrows (ClassCastException .class , () -> exec ("String o = 'string'; ArrayList b = o;" ));
642642 expectScriptThrows (ClassCastException .class , () -> exec ("String o = 'string'; ArrayList b = (ArrayList)o;" ));
643643 }
644+
645+ public void testPrimitiveBooleanCasts () {
646+ expectScriptThrows (ClassCastException .class , () -> exec ("boolean o = true; Object n = o;" ));
647+ expectScriptThrows (ClassCastException .class , () -> exec ("boolean o = true; Object n = (Object)o;" ));
648+
649+ expectScriptThrows (ClassCastException .class , () -> exec ("boolean o = true; Number n = o;" ));
650+ expectScriptThrows (ClassCastException .class , () -> exec ("boolean o = true; Number n = (boolean)o;" ));
651+
652+ exec ("boolean o = true; boolean b = o;" );
653+ exec ("boolean o = true; boolean b = (boolean)o;" );
654+
655+ expectScriptThrows (ClassCastException .class , () -> exec ("boolean o = true; byte b = o;" ));
656+ expectScriptThrows (ClassCastException .class , () -> exec ("boolean o = true; byte b = (byte)o;" ));
657+
658+ expectScriptThrows (ClassCastException .class , () -> exec ("boolean o = true; short b = o;" ));
659+ expectScriptThrows (ClassCastException .class , () -> exec ("boolean o = true; short b = (short)o;" ));
660+
661+ expectScriptThrows (ClassCastException .class , () -> exec ("boolean o = true; char b = o;" ));
662+ expectScriptThrows (ClassCastException .class , () -> exec ("boolean o = true; char b = (char)o;" ));
663+
664+ expectScriptThrows (ClassCastException .class , () -> exec ("boolean o = true; int b = o;" ));
665+ expectScriptThrows (ClassCastException .class , () -> exec ("boolean o = true; int b = (int)o;" ));
666+
667+ expectScriptThrows (ClassCastException .class , () -> exec ("boolean o = true; long b = o;" ));
668+ expectScriptThrows (ClassCastException .class , () -> exec ("boolean o = true; long b = (long)o;" ));
669+
670+ expectScriptThrows (ClassCastException .class , () -> exec ("boolean o = true; float b = o;" ));
671+ expectScriptThrows (ClassCastException .class , () -> exec ("boolean o = true; float b = (float)o;" ));
672+
673+ expectScriptThrows (ClassCastException .class , () -> exec ("boolean o = true; double b = o;" ));
674+ expectScriptThrows (ClassCastException .class , () -> exec ("boolean o = true; double b = (double)o;" ));
675+
676+ expectScriptThrows (ClassCastException .class , () -> exec ("boolean o = true; Boolean b = o;" ));
677+ expectScriptThrows (ClassCastException .class , () -> exec ("boolean o = true; Boolean b = (Boolean)o;" ));
678+
679+ expectScriptThrows (ClassCastException .class , () -> exec ("boolean o = true; Byte b = o;" ));
680+ expectScriptThrows (ClassCastException .class , () -> exec ("boolean o = true; Byte b = (Byte)o;" ));
681+
682+ expectScriptThrows (ClassCastException .class , () -> exec ("boolean o = true; Short b = o;" ));
683+ expectScriptThrows (ClassCastException .class , () -> exec ("boolean o = true; Short b = (Short)o;" ));
684+
685+ expectScriptThrows (ClassCastException .class , () -> exec ("boolean o = true; Character b = o;" ));
686+ expectScriptThrows (ClassCastException .class , () -> exec ("boolean o = true; Character b = (Character)o;" ));
687+
688+ expectScriptThrows (ClassCastException .class , () -> exec ("boolean o = true; Integer b = o;" ));
689+ expectScriptThrows (ClassCastException .class , () -> exec ("boolean o = true; Integer b = (Integer)o;" ));
690+
691+ expectScriptThrows (ClassCastException .class , () -> exec ("boolean o = true; Long b = o;" ));
692+ expectScriptThrows (ClassCastException .class , () -> exec ("boolean o = true; Long b = (Long)o;" ));
693+
694+ expectScriptThrows (ClassCastException .class , () -> exec ("boolean o = true; Float b = o;" ));
695+ expectScriptThrows (ClassCastException .class , () -> exec ("boolean o = true; Float b = (Float)o;" ));
696+
697+ expectScriptThrows (ClassCastException .class , () -> exec ("boolean o = true; Double b = o;" ));
698+ expectScriptThrows (ClassCastException .class , () -> exec ("boolean o = true; Double b = (Double)o;" ));
699+
700+ expectScriptThrows (ClassCastException .class , () -> exec ("boolean o = true; ArrayList b = o;" ));
701+ expectScriptThrows (ClassCastException .class , () -> exec ("boolean o = true; ArrayList b = (ArrayList)o;" ));
702+ }
703+
704+ public void testBoxedBooleanCasts () {
705+ exec ("Boolean o = Boolean.valueOf(true); Object n = o;" );
706+ exec ("Boolean o = null; Object n = o;" );
707+ exec ("Boolean o = Boolean.valueOf(true); Object n = (Object)o;" );
708+ exec ("Boolean o = null; Object n = (Object)o;" );
709+
710+ expectScriptThrows (ClassCastException .class , () -> exec ("Boolean o = Boolean.valueOf(true); Number n = o;" ));
711+ expectScriptThrows (ClassCastException .class , () -> exec ("Boolean o = null; Number n = o;" ));
712+ expectScriptThrows (ClassCastException .class , () -> exec ("Boolean o = Boolean.valueOf(true); Number n = (Boolean)o;" ));
713+ expectScriptThrows (ClassCastException .class , () -> exec ("Boolean o = null; Number n = (Boolean)o;" ));
714+
715+ expectScriptThrows (ClassCastException .class , () -> exec ("Boolean o = Boolean.valueOf(true); boolean b = o;" ));
716+ expectScriptThrows (ClassCastException .class , () -> exec ("Boolean o = null; boolean b = o;" ));
717+ expectScriptThrows (ClassCastException .class , () -> exec ("Boolean o = Boolean.valueOf(true); boolean b = (boolean)o;" ));
718+ expectScriptThrows (ClassCastException .class , () -> exec ("Boolean o = null; boolean b = (boolean)o;" ));
719+
720+ expectScriptThrows (ClassCastException .class , () -> exec ("Boolean o = Boolean.valueOf(true); byte b = o;" ));
721+ expectScriptThrows (ClassCastException .class , () -> exec ("Boolean o = null; byte b = o;" ));
722+ expectScriptThrows (ClassCastException .class , () -> exec ("Boolean o = Boolean.valueOf(true); byte b = (byte)o;" ));
723+ expectScriptThrows (ClassCastException .class , () -> exec ("Boolean o = null; byte b = (byte)o;" ));
724+
725+ expectScriptThrows (ClassCastException .class , () -> exec ("Boolean o = Boolean.valueOf(true); short b = o;" ));
726+ expectScriptThrows (ClassCastException .class , () -> exec ("Boolean o = null; short b = o;" ));
727+ expectScriptThrows (ClassCastException .class , () -> exec ("Boolean o = Boolean.valueOf(true); short b = (short)o;" ));
728+ expectScriptThrows (ClassCastException .class , () -> exec ("Boolean o = null; short b = (short)o;" ));
729+
730+ expectScriptThrows (ClassCastException .class , () -> exec ("Boolean o = Boolean.valueOf(true); char b = o;" ));
731+ expectScriptThrows (ClassCastException .class , () -> exec ("Boolean o = null; char b = o;" ));
732+ expectScriptThrows (ClassCastException .class , () -> exec ("Boolean o = Boolean.valueOf(true); char b = (char)o;" ));
733+ expectScriptThrows (ClassCastException .class , () -> exec ("Boolean o = null; char b = (char)o;" ));
734+
735+ expectScriptThrows (ClassCastException .class , () -> exec ("Boolean o = Boolean.valueOf(true); int b = o;" ));
736+ expectScriptThrows (ClassCastException .class , () -> exec ("Boolean o = null; int b = o;" ));
737+ expectScriptThrows (ClassCastException .class , () -> exec ("Boolean o = Boolean.valueOf(true); int b = (int)o;" ));
738+ expectScriptThrows (ClassCastException .class , () -> exec ("Boolean o = null; int b = (int)o;" ));
739+
740+ expectScriptThrows (ClassCastException .class , () -> exec ("Boolean o = Boolean.valueOf(true); long b = o;" ));
741+ expectScriptThrows (ClassCastException .class , () -> exec ("Boolean o = null; long b = o;" ));
742+ expectScriptThrows (ClassCastException .class , () -> exec ("Boolean o = Boolean.valueOf(true); long b = (long)o;" ));
743+ expectScriptThrows (ClassCastException .class , () -> exec ("Boolean o = null; long b = (long)o;" ));
744+
745+ expectScriptThrows (ClassCastException .class , () -> exec ("Boolean o = Boolean.valueOf(true); float b = o;" ));
746+ expectScriptThrows (ClassCastException .class , () -> exec ("Boolean o = null; float b = o;" ));
747+ expectScriptThrows (ClassCastException .class , () -> exec ("Boolean o = Boolean.valueOf(true); float b = (float)o;" ));
748+ expectScriptThrows (ClassCastException .class , () -> exec ("Boolean o = null; float b = (float)o;" ));
749+
750+ expectScriptThrows (ClassCastException .class , () -> exec ("Boolean o = Boolean.valueOf(true); double b = o;" ));
751+ expectScriptThrows (ClassCastException .class , () -> exec ("Boolean o = null; double b = o;" ));
752+ expectScriptThrows (ClassCastException .class , () -> exec ("Boolean o = Boolean.valueOf(true); double b = (double)o;" ));
753+ expectScriptThrows (ClassCastException .class , () -> exec ("Boolean o = null; double b = (double)o;" ));
754+
755+ exec ("Boolean o = Boolean.valueOf(true); Boolean b = o;" );
756+ exec ("Boolean o = null; Boolean b = o;" );
757+ exec ("Boolean o = Boolean.valueOf(true); Boolean b = (Boolean)o;" );
758+ exec ("Boolean o = null; Boolean b = (Boolean)o;" );
759+
760+ expectScriptThrows (ClassCastException .class , () -> exec ("Boolean o = Boolean.valueOf(true); Byte b = o;" ));
761+ expectScriptThrows (ClassCastException .class , () -> exec ("Boolean o = null; Byte b = o;" ));
762+ expectScriptThrows (ClassCastException .class , () -> exec ("Boolean o = Boolean.valueOf(true); Byte b = (Byte)o;" ));
763+ expectScriptThrows (ClassCastException .class , () -> exec ("Boolean o = null; Byte b = (Byte)o;" ));
764+
765+ expectScriptThrows (ClassCastException .class , () -> exec ("Boolean o = Boolean.valueOf(true); Short b = o;" ));
766+ expectScriptThrows (ClassCastException .class , () -> exec ("Boolean o = null; Short b = o;" ));
767+ expectScriptThrows (ClassCastException .class , () -> exec ("Boolean o = Boolean.valueOf(true); Short b = (Short)o;" ));
768+ expectScriptThrows (ClassCastException .class , () -> exec ("Boolean o = null; Short b = (Short)o;" ));
769+
770+ expectScriptThrows (ClassCastException .class , () -> exec ("Boolean o = Boolean.valueOf(true); Character b = o;" ));
771+ expectScriptThrows (ClassCastException .class , () -> exec ("Boolean o = null; Character b = o;" ));
772+ expectScriptThrows (ClassCastException .class , () -> exec ("Boolean o = Boolean.valueOf(true); Character b = (Character)o;" ));
773+ expectScriptThrows (ClassCastException .class , () -> exec ("Boolean o = null; Character b = (Character)o;" ));
774+
775+ expectScriptThrows (ClassCastException .class , () -> exec ("Boolean o = Boolean.valueOf(true); Integer b = o;" ));
776+ expectScriptThrows (ClassCastException .class , () -> exec ("Boolean o = null; Integer b = o;" ));
777+ expectScriptThrows (ClassCastException .class , () -> exec ("Boolean o = Boolean.valueOf(true); Integer b = (Integer)o;" ));
778+ expectScriptThrows (ClassCastException .class , () -> exec ("Boolean o = null; Integer b = (Integer)o;" ));
779+
780+ expectScriptThrows (ClassCastException .class , () -> exec ("Boolean o = Boolean.valueOf(true); Long b = o;" ));
781+ expectScriptThrows (ClassCastException .class , () -> exec ("Boolean o = null; Long b = o;" ));
782+ expectScriptThrows (ClassCastException .class , () -> exec ("Boolean o = Boolean.valueOf(true); Long b = (Long)o;" ));
783+ expectScriptThrows (ClassCastException .class , () -> exec ("Boolean o = null; Long b = (Long)o;" ));
784+
785+ expectScriptThrows (ClassCastException .class , () -> exec ("Boolean o = Boolean.valueOf(true); Float b = o;" ));
786+ expectScriptThrows (ClassCastException .class , () -> exec ("Boolean o = null; Float b = o;" ));
787+ expectScriptThrows (ClassCastException .class , () -> exec ("Boolean o = Boolean.valueOf(true); Float b = (Float)o;" ));
788+ expectScriptThrows (ClassCastException .class , () -> exec ("Boolean o = null; Float b = (Float)o;" ));
789+
790+ expectScriptThrows (ClassCastException .class , () -> exec ("Boolean o = Boolean.valueOf(true); Double b = o;" ));
791+ expectScriptThrows (ClassCastException .class , () -> exec ("Boolean o = null; Double b = o;" ));
792+ expectScriptThrows (ClassCastException .class , () -> exec ("Boolean o = Boolean.valueOf(true); Double b = (Double)o;" ));
793+ expectScriptThrows (ClassCastException .class , () -> exec ("Boolean o = null; Double b = (Double)o;" ));
794+
795+ expectScriptThrows (ClassCastException .class , () -> exec ("Boolean o = Boolean.valueOf(true); ArrayList b = o;" ));
796+ expectScriptThrows (ClassCastException .class , () -> exec ("Boolean o = Boolean.valueOf(true); ArrayList b = (ArrayList)o;" ));
797+ }
644798}
0 commit comments