You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Cédric Champeau (JIRA)" <ji...@apache.org> on 2017/08/22 07:52:00 UTC
[jira] [Commented] (GROOVY-8293) Instanceof inference does work on
fields
[ https://issues.apache.org/jira/browse/GROOVY-8293?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16136473#comment-16136473 ]
Cédric Champeau commented on GROOVY-8293:
-----------------------------------------
It works as expected. The fact that Groovy doesn't infer the type of the field from its declaration doesn't prevent the compiler from doing smarts, especially the _instanceof_ check. You're telling it that the type is a String, so it complies.
> Instanceof inference does work on fields
> ----------------------------------------
>
> Key: GROOVY-8293
> URL: https://issues.apache.org/jira/browse/GROOVY-8293
> Project: Groovy
> Issue Type: Bug
> Components: Static compilation, Static Type Checker
> Affects Versions: 2.4.12
> Reporter: Alexey Afanasiev
>
> This code should not compile:
> {code}
> import groovy.transform.CompileStatic
> @CompileStatic
> class Foo {
> Object str = "str"
> def bar() {
> if (str instanceof String) {
> str.toUpperCase() // here should be compile error
> }
> }
> }
> {code}
> Documentation http://docs.groovy-lang.org/next/html/documentation/core-semantics.html#type-inference states:
> _it does not perform any kind of type inference on fields, always falling back to the declared type of a field_
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)