001    package org.mesopotamia.lang.java;
002    
003    import org.mesopotamia.LanguageElement;
004    import org.mesopotamia.MesopotamiaException;
005    import org.mesopotamia.NodeData;
006    import org.mesopotamia.RepositoryLanguage;
007    import org.mesopotamia.Scan;
008    import org.mesopotamia.lang.java.ref.Reference;
009    import org.mesopotamia.lang.java.ref.Scope;
010    import org.mesopotamia.lang.java.ref.TypeInfo;
011    import org.mesopotamia.lang.java.ref.TypeSpecInfo;
012    
013    public class This extends PostfixExpression implements Reference<TypeInfo> {
014    
015            public This(NodeData xData, Class<?> context, Scan scan,
016                            RepositoryLanguage language, Object environment) throws MesopotamiaException {
017                    super(xData, context, scan, language, environment);
018    
019                    // Select attributes
020    
021            }
022    
023            public TypeInfo getInfo() {
024                    LanguageElement provider = getProvider();
025                    if (provider instanceof Expression) {
026                            return TypeSpecification.toTypeInfo(((Expression) provider).getTypeSpecInfo(), findParent(Scope.class));
027                    }
028                    return findParent(TypeDefinitionOrAnonymous.class);
029            }
030            
031            @Override
032            public TypeSpecInfo getTypeSpecInfo() {
033                    return new TypeSpecInfo() {
034    
035                            public int getDimensions() {
036                                    return 0;
037                            }
038    
039                            public TypeInfo getTypeInfo() {
040                                    return getInfo();
041                            }
042                            
043                    };
044            }
045    
046    }