private PLvalue DetypeArray(PType type) { if (type is AArrayTempType) { AArrayTempType atype = (AArrayTempType)type; return(new AArrayLvalue(atype.GetToken(), new ALvalueExp(DetypeArray(atype.GetType())), atype.GetDimention())); } if (type is ANamedType) { ANamedType atype = (ANamedType)type; return(new AAmbiguousNameLvalue(atype.GetName())); } if (type is AVoidType) { AVoidType atype = (AVoidType)type; throw new Exception(Util.TokenToStringPos(atype.GetToken()) + " (Weeder)Unexpected type: void. It should not be possible for this error to occur"); } /*if (type is AArrayType) * { * AArrayType atype = (AArrayType)type; * throw new Exception(Util.TokenToStringPos(atype.GetToken()) + " (Weeder)Unexpected type: ArrayType. It should not be possible for this error to occur"); * }*/ throw new Exception("(Weeder)Unexpected type: none. It should not be possible for this error to occur"); }
public override void OutAVoidType(AVoidType node) { // check: void type must be a return types. if (node.Parent().GetType() != typeof(AFuncDecl)) { Error.Fatal(ErrorType.VoidTypeNotReturnType, node.GetToken()); } base.OutAVoidType(node); }