001 package org.mesopotamia.lang.java; 002 003 import java.util.List; 004 005 import org.mesopotamia.MesopotamiaException; 006 import org.mesopotamia.NodeData; 007 import org.mesopotamia.RepositoryLanguage; 008 import org.mesopotamia.Scan; 009 import org.mesopotamia.lang.java.ref.MethodInfo; 010 import org.mesopotamia.lang.java.ref.TypeInfo; 011 import org.mesopotamia.lang.java.ref.TypeSpecInfo; 012 import org.mesopotamia.lang.java.ref.VariableInfo; 013 014 public class Null extends PrimaryExpression { 015 016 public static final String NULL_FCN = "(null)"; 017 018 public static final TypeInfo NULL_TYPE_INFO = new TypeInfo() { 019 020 public MethodInfo findConstructor(String[] argumentTypes) { 021 return null; 022 } 023 024 public TypeInfo findNestedType(String name) { 025 return null; 026 } 027 028 public MethodInfo findTypeMethod(String name, String[] argumentTypes) { 029 return null; 030 } 031 032 public VariableInfo findTypeVariable(String name) { 033 return null; 034 } 035 036 /** 037 * Null is compatible with object types. 038 */ 039 public boolean isKindOf(String superFcn) { 040 return BuiltInType.getBuiltInType(superFcn)==null; 041 } 042 043 public TypeInfo getDeclaringType() { 044 return null; 045 } 046 047 public String getFcn() { 048 return NULL_FCN; 049 } 050 051 @SuppressWarnings("unchecked") 052 public List<String> getModifiers() { 053 return emptyList; 054 } 055 056 public String getName() { 057 return NULL_FCN; 058 } 059 060 }; 061 062 public static final TypeSpecInfo NULL_TYPE_SPEC_INFO = new TypeSpecInfo() { 063 064 public int getDimensions() { 065 return -1; 066 } 067 068 public TypeInfo getTypeInfo() { 069 return NULL_TYPE_INFO; 070 } 071 072 }; 073 074 public Null(NodeData xData, Class<?> context, Scan scan, 075 RepositoryLanguage language, Object environment) throws MesopotamiaException { 076 super(xData, context, scan, language, environment); 077 078 // Select attributes 079 080 } 081 082 @Override 083 public TypeSpecInfo getTypeSpecInfo() { 084 return NULL_TYPE_SPEC_INFO; 085 } 086 087 }