/* * Copyright 2013 Guidewire Software, Inc. */ package gw.internal.gosu.parser.expressions; import gw.internal.gosu.parser.GosuAnnotation; import gw.internal.gosu.parser.GosuAnnotationInfo; import gw.internal.gosu.parser.IGosuAnnotation; import gw.internal.gosu.parser.IGosuClassInternal; import gw.lang.parser.expressions.IAnnotationExpression; public class AnnotationExpression extends NewExpression implements IAnnotationExpression { private GosuAnnotation _annotation; public GosuAnnotation getAnnotation() { return _annotation; } public void setAnnotation( IGosuAnnotation annotation ) { _annotation = (GosuAnnotation)annotation; } @Override public Object evaluate() { if( !isCompileTimeConstant() ) { return super.evaluate(); } return new GosuAnnotationInfo( getAnnotation(), getAnnotation().getOwnersType().getTypeInfo(), (IGosuClassInternal)getGosuClass(), 0 ); } }