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 }