[ 
https://issues.apache.org/jira/browse/GROOVY-7690?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Emanuel Seidinger updated GROOVY-7690:
--------------------------------------
    Description: 
I want to provoke a compiler error. I am omitting the type parameter of a 
generic List and use it as a raw type. When getting an object from the raw list 
it should be of type Object. When casting this Object implicitly to an Integer 
the compiler should throw an illegal assignment error but it doesn't. 

The following code example should illustrate the problem. Case 2 and 3 should 
throw the same error but only case 3 is producing an error.

{code}
import groovy.transform.TypeChecked

@TypeChecked
class Test {

    static method() {
        ArrayList<Integer> integerArrayList = new ArrayList<>();
        ArrayList rawArrayList = new ArrayList();
        ArrayList<Object> objectArrayList = new ArrayList<>();

        integerArrayList << 1;
        rawArrayList << new Object();
        objectArrayList << new Object();

        Integer x = integerArrayList.get(0);    // Case 1: works as expected
        Integer y = rawArrayList.get(0);        // Case 2: doesn't throw a 
compile error but should
        Integer z = objectArrayList.get(0);     // Case 3: throws a compile 
error as expected
    }
}
{code}

  was:
I want to provoke a compiler error. I am omitting the type parameter of a 
generic List and use it as a raw type. When getting an object from the raw list 
it should be of type Object. When casting this attribute implicitly to an 
Integer the compiler should throw an illegal assignment error but it doesn't. 

The following code example should illustrate the problem. Case 2 and 3 should 
throw the same error but only case 3 is producing an error.

{code}
import groovy.transform.TypeChecked

@TypeChecked
class Test {

    static method() {
        ArrayList<Integer> integerArrayList = new ArrayList<>();
        ArrayList rawArrayList = new ArrayList();
        ArrayList<Object> objectArrayList = new ArrayList<>();

        integerArrayList << 1;
        rawArrayList << new Object();
        objectArrayList << new Object();

        Integer x = integerArrayList.get(0);    // Case 1: works as expected
        Integer y = rawArrayList.get(0);        // Case 2: doesn't throw a 
compile error but should
        Integer z = objectArrayList.get(0);     // Case 3: throws a compile 
error as expected
    }
}
{code}


> TypeChecked Groovy does not throw illegal assignment error at compile time 
> when using raw generic type
> ------------------------------------------------------------------------------------------------------
>
>                 Key: GROOVY-7690
>                 URL: https://issues.apache.org/jira/browse/GROOVY-7690
>             Project: Groovy
>          Issue Type: Bug
>    Affects Versions: 2.4.5
>            Reporter: Emanuel Seidinger
>
> I want to provoke a compiler error. I am omitting the type parameter of a 
> generic List and use it as a raw type. When getting an object from the raw 
> list it should be of type Object. When casting this Object implicitly to an 
> Integer the compiler should throw an illegal assignment error but it doesn't. 
> The following code example should illustrate the problem. Case 2 and 3 should 
> throw the same error but only case 3 is producing an error.
> {code}
> import groovy.transform.TypeChecked
> @TypeChecked
> class Test {
>     static method() {
>         ArrayList<Integer> integerArrayList = new ArrayList<>();
>         ArrayList rawArrayList = new ArrayList();
>         ArrayList<Object> objectArrayList = new ArrayList<>();
>         integerArrayList << 1;
>         rawArrayList << new Object();
>         objectArrayList << new Object();
>         Integer x = integerArrayList.get(0);    // Case 1: works as expected
>         Integer y = rawArrayList.get(0);        // Case 2: doesn't throw a 
> compile error but should
>         Integer z = objectArrayList.get(0);     // Case 3: throws a compile 
> error as expected
>     }
> }
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to