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

Keegan Witt updated GROOVY-9927:
--------------------------------
    Summary: Stub not using fully qualified class for inner java class when 
importing outer class  (was: Stub qualified class for inner java class when 
importing outer class)

> Stub not using fully qualified class for inner java class when importing 
> outer class
> ------------------------------------------------------------------------------------
>
>                 Key: GROOVY-9927
>                 URL: https://issues.apache.org/jira/browse/GROOVY-9927
>             Project: Groovy
>          Issue Type: Bug
>          Components: Stub generator / Joint compiler
>    Affects Versions: 3.0.7
>            Reporter: Keegan Witt
>            Priority: Major
>
> Here's a failing test, demonstrating the problem
> {code:groovy}
> /*
>  *  Licensed to the Apache Software Foundation (ASF) under one
>  *  or more contributor license agreements.  See the NOTICE file
>  *  distributed with this work for additional information
>  *  regarding copyright ownership.  The ASF licenses this file
>  *  to you under the Apache License, Version 2.0 (the
>  *  "License"); you may not use this file except in compliance
>  *  with the License.  You may obtain a copy of the License at
>  *
>  *    http://www.apache.org/licenses/LICENSE-2.0
>  *
>  *  Unless required by applicable law or agreed to in writing,
>  *  software distributed under the License is distributed on an
>  *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
>  *  KIND, either express or implied.  See the License for the
>  *  specific language governing permissions and limitations
>  *  under the License.
>  */
> package org.codehaus.groovy.tools.stubgenerator
> class InnerJavaClassOuterImportInGroovy extends StringSourcesStubTestCase {
>     Map<String, String> provideSources() {
>         [
>                 'model/Logger.java': '''
>                     package model;
>                     public class Logger {
>                         public enum Level {
>                             DEBUG, INFO, WARN, ERROR
>                         }
>                     }
>                 ''',
>                 'service/LoggerLevelDescriber.groovy': '''
>                     package service
>                     import model.Logger
>                     class LoggerLevelDescriber {
>                         String describeLevel(Logger.Level loggerLevel) { 
> return loggerLevel.name }
>                     }
>                 '''
>         ]
>     }
>     void verifyStubs() {
>         def stubSource = stubJavaSourceFor('service.LoggerLevelDescriber')
>         assert stubSource.contains(' describeLevel(model.Logger.Level ')
>         // TODO: should this be tested too?
> //        def classLoader = new URLClassLoader([targetDir.toURI().toURL()] as 
> URL[], loader)
> //        classLoader.loadClass('model.Logger')
> //        classLoader.loadClass('model.Logger.Level')
> //        classLoader.loadClass('service.LoggerLevelDescriber')
>     }
> }
> {code}
> The stub has
> {code:java}
> public  java.lang.String describeLevel(Logger.Level loggerLevel) { return 
> (java.lang.String)null;}
> {code}
> With no import for {{Logger}}.
> If you instead do
> {code:groovy}import model.Logger.LogLevel{code}
> instead of
> {code:groovy}import model.Logger{code}
> it prints the qualified name in the stub.
> It also works if you put the qualified name in Groovy, that also works, like
> {code:groovy}String describeLevel(model.Logger.Level loggerLevel){code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to