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    }