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    }