/* * Copyright 2013 Guidewire Software, Inc. */ package gw.internal.gosu.parser.statements; import gw.internal.gosu.parser.PositionToken; import gw.internal.gosu.parser.Statement; import gw.internal.gosu.parser.IGosuClassInternal; import gw.lang.parser.IParseTree; import gw.lang.parser.ISourceCodeTokenizer; import gw.lang.parser.IToken; import gw.lang.parser.statements.IClassFileStatement; import gw.lang.parser.statements.ITerminalStatement; import gw.lang.reflect.module.IModule; import java.util.List; /** */ public class ClassFileStatement extends Statement implements IClassFileStatement { public ClassStatement getClassStatement() { for( IParseTree parseTree : getLocation().getChildren() ) { if( parseTree.getParsedElement() instanceof ClassStatement ) { return (ClassStatement)parseTree.getParsedElement(); } } return null; } public IGosuClassInternal getGosuClass() { if(getLocation() == null) { return null; } if(getLocation().getScriptPartId() == null) { return null; } return (IGosuClassInternal)getLocation().getScriptPartId().getContainingType(); } public Object execute() { return null; } @Override public String toString() { IGosuClassInternal gosuClass = getGosuClass(); return gosuClass == null ? "no class" : gosuClass.toString(); } @Override protected ITerminalStatement getLeastSignificantTerminalStatement_internal( boolean[] bAbsolute ) { bAbsolute[0] = false; return null; } public IModule getModule() { return getGosuClass().getTypeLoader().getModule(); } @Override public void assignTokens( List<IToken> tokens ) { super.assignTokens( tokens ); // Add remaining tokens e.g., trailing whitespace, trailing commnets for( int i = 0; i < tokens.size(); i++ ) { IToken token = tokens.get( i ); if( token.getType() != ISourceCodeTokenizer.TT_EOF && !(token instanceof PositionToken) ) { addToken( token, getLocation().getLastChild() ); } tokens.remove( i-- ); } } }