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 ClassLiteral extends PrimaryExpression implements Reference<TypeInfo> { 013 014 public ClassLiteral( 015 NodeData xData, 016 Class<?> context, 017 Scan scan, 018 RepositoryLanguage language, 019 Object environment) throws MesopotamiaException { 020 021 super(xData, context, scan, language, environment); 022 } 023 024 public TypeInfo getInfo() { 025 Scope ec = findParent(Scope.class); 026 return ec==null ? null : ec.findType("java.lang.Class"); 027 } 028 029 @Override 030 public TypeSpecInfo getTypeSpecInfo() { 031 Scope ec = findParent(Scope.class); 032 if (ec==null) { 033 return null; 034 } 035 final TypeInfo stringInfo = ec.findType("java.lang.Class"); 036 return stringInfo == null ? null : new TypeSpecInfo() { 037 038 public int getDimensions() { 039 return 0; 040 } 041 042 public TypeInfo getTypeInfo() { 043 return stringInfo; 044 } 045 046 }; 047 } 048 049 }