/*-
 * #%L
 * Soot - a J*va Optimization Framework
 * %%
 * Copyright (C) 1997 - 2018 Raja Vallée-Rai and others
 * %%
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as
 * published by the Free Software Foundation, either version 2.1 of the
 * License, or (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Lesser Public License for more details.
 * 
 * You should have received a copy of the GNU General Lesser Public
 * License along with this program.  If not, see
 * <http://www.gnu.org/licenses/lgpl-2.1.html>.
 * #L%
 */
/** @testcase PR#645 PUREJAVA Parent interface using public inner interface of child in same file */
interface Child extends Parent {
    public interface Inner { 
        public String ok();
    }
}

/** Parent must be in same file as child and be declared AFTER */
interface Parent { 
    public Child.Inner getChildInner(); 
}

public class ParentInterfaceUsingChildInnerInterfaceLJH {
    public static void main (String[] args) {
        Example me = new Example();   
        String result = me.getChildInner().ok(); 
        if(!((result != null) && result.startsWith("ok")))
          System.out.println("expected ok... got " + result); 
    } 
}

class Example implements Parent {
    public Child.Inner getChildInner() {
        return new Child.Inner() {
                public String ok() {
                    return "ok: " + getClass().getName();
                }
            };
    }
}
