amelentev / java-oo

Java Operator Overloading
http://amelentev.github.io/java-oo/
268 stars 31 forks source link

Bug when using OO out of a map #40

Open winterstein opened 8 years ago

winterstein commented 8 years ago

Thank you for making this brilliant plugin.

I've noticed a bug. Try the following code -- it claims to compile, but breaks class loading at runtime. This is using Java 7 on Ubuntu Linux.

Map<String, BigInteger> map = new HashMap<>();
map.put("a",BigInteger.valueOf(2));
BigInteger a2 = map["a"] * map["a"];

Note that if you add casts, e.g. BigInteger a2 = ((BigInteger)map["a"]) * ((BigInteger)map["a"]); it works fine.

aroelke commented 8 years ago

I get a similar problem when I have a Map<?, Integer>:

Map<String, Integer> map = new HashMap<String, Integer>();
map.put("str", 4);
if (map["str"] < 1) System.out.println(map["str"]);

This outputs "4" when it shouldn't, unless I cast map["str"] in the if expression to Integer or int explicitly. In other projects I get an "inconsistent stack map frames" error.