001 package org.mesopotamia.lang.java; 002 003 import org.mesopotamia.MesopotamiaException; 004 import org.mesopotamia.NodeData; 005 import org.mesopotamia.RepositoryLanguage; 006 import org.mesopotamia.Scan; 007 import org.mesopotamia.lang.java.ref.Reference; 008 import org.mesopotamia.lang.java.ref.Scope; 009 import org.mesopotamia.lang.java.ref.TypeInfo; 010 import org.mesopotamia.lang.java.ref.TypeSpecInfo; 011 012 public class Super extends PrimaryExpression implements Reference<TypeInfo> { 013 014 public Super(NodeData xData, Class<?> context, Scan scan, 015 RepositoryLanguage language, Object environment) throws MesopotamiaException { 016 super(xData, context, scan, language, environment); 017 018 // Select attributes 019 020 } 021 022 public TypeInfo getInfo() { 023 ClassDefinition enclosingType = findParent(ClassDefinition.class); 024 if (enclosingType==null) { 025 return null; 026 } 027 String superStr = enclosingType.getExtends(); 028 if (superStr==null) { 029 superStr = JAVA_LANG_OBJECT; 030 } 031 Scope scope = enclosingType.findParent(Scope.class); 032 return scope == null ? null : scope.findType(superStr); 033 } 034 035 @Override 036 public TypeSpecInfo getTypeSpecInfo() { 037 return new TypeSpecInfo() { 038 039 public int getDimensions() { 040 return 0; 041 } 042 043 public TypeInfo getTypeInfo() { 044 return getInfo(); 045 } 046 047 }; 048 } 049 050 }