const vector<OverloadPtr> &callableOverloads(ObjectPtr x) { initCallable(x); switch (x->objKind) { case TYPE : { Type *y = (Type *)x.ptr(); return y->overloads; } case RECORD : { Record *y = (Record *)x.ptr(); return y->overloads; } case VARIANT : { Variant *y = (Variant *)x.ptr(); return y->overloads; } case PROCEDURE : { Procedure *y = (Procedure *)x.ptr(); return y->overloads; } case PRIM_OP : { assert(isOverloadablePrimOp(x)); PrimOp *y = (PrimOp *)x.ptr(); return primOpOverloads(y); } default : { assert(false); const vector<OverloadPtr> *ptr = NULL; return *ptr; } } }
static llvm::ArrayRef<OverloadPtr> callableOverloads(ObjectPtr x) { initCallable(x); switch (x->objKind) { case TYPE : { Type *y = (Type *)x.ptr(); return y->overloads; } case RECORD_DECL : { RecordDecl *y = (RecordDecl *)x.ptr(); return y->overloads; } case VARIANT_DECL : { VariantDecl *y = (VariantDecl *)x.ptr(); return y->overloads; } case PROCEDURE : { Procedure *y = (Procedure *)x.ptr(); return y->overloads; } case PRIM_OP : { assert(isOverloadablePrimOp(x)); PrimOp *y = (PrimOp *)x.ptr(); return primOpOverloads(y); } case GLOBAL_ALIAS : { GlobalAlias *a = (GlobalAlias *)x.ptr(); assert(a->hasParams()); return a->overloads; } default : { assert(false); const vector<OverloadPtr> *ptr = NULL; return *ptr; } } }