diff --git a/EnumType.cpp b/EnumType.cpp
index 92cb3a7..c88ecf7 100644
--- a/EnumType.cpp
+++ b/EnumType.cpp
@@ -60,6 +60,10 @@
     mValues.push_back(value);
 }
 
+bool EnumType::isElidableType() const {
+    return mStorageType->isElidableType();
+}
+
 const ScalarType *EnumType::resolveToScalarType() const {
     return mStorageType->resolveToScalarType();
 }
diff --git a/EnumType.h b/EnumType.h
index e810ed3..04d8b61 100644
--- a/EnumType.h
+++ b/EnumType.h
@@ -38,6 +38,7 @@
 
     LocalIdentifier *lookupIdentifier(const std::string &name) const override;
 
+    bool isElidableType() const override;
     const ScalarType *resolveToScalarType() const override;
 
     std::string typeName() const override;
diff --git a/Method.cpp b/Method.cpp
index 502591c..284339e 100644
--- a/Method.cpp
+++ b/Method.cpp
@@ -202,21 +202,14 @@
 }
 
 const TypedVar* Method::canElideCallback() const {
-    auto &res = results();
-
     // Can't elide callback for void or tuple-returning methods
-    if (res.size() != 1) {
+    if (mResults->size() != 1) {
         return nullptr;
     }
 
-    const TypedVar *typedVar = res.at(0);
+    const TypedVar *typedVar = mResults->at(0);
 
-    // We only elide callbacks for methods returning a single scalar.
-    if (typedVar->type().resolveToScalarType() != nullptr) {
-        return typedVar;
-    }
-
-    if (typedVar->type().isPointer()) {
+    if (typedVar->type().isElidableType()) {
         return typedVar;
     }
 
diff --git a/PointerType.cpp b/PointerType.cpp
index 14bc010..8349cfd 100644
--- a/PointerType.cpp
+++ b/PointerType.cpp
@@ -27,6 +27,10 @@
     return true;
 }
 
+bool PointerType::isElidableType() const {
+    return true;
+}
+
 void PointerType::addNamedTypesToSet(std::set<const FQName> &) const {
     // do nothing
 }
diff --git a/PointerType.h b/PointerType.h
index 242cc63..cd0f839 100644
--- a/PointerType.h
+++ b/PointerType.h
@@ -27,6 +27,8 @@
 
     bool isPointer() const override;
 
+    bool isElidableType() const override;
+
     void addNamedTypesToSet(std::set<const FQName> &set) const override;
 
     std::string getCppType(
diff --git a/ScalarType.cpp b/ScalarType.cpp
index fccebd6..042178b 100644
--- a/ScalarType.cpp
+++ b/ScalarType.cpp
@@ -41,6 +41,10 @@
     return true;
 }
 
+bool ScalarType::isElidableType() const {
+    return true;
+}
+
 std::string ScalarType::typeName() const {
     return getCppStackType();
 }
diff --git a/ScalarType.h b/ScalarType.h
index 0ff8ec5..80bc9a0 100644
--- a/ScalarType.h
+++ b/ScalarType.h
@@ -41,6 +41,7 @@
 
     bool isScalar() const override;
 
+    bool isElidableType() const override;
     const ScalarType *resolveToScalarType() const override;
 
     std::string typeName() const override;
diff --git a/Type.cpp b/Type.cpp
index c5e55a9..107e502 100644
--- a/Type.cpp
+++ b/Type.cpp
@@ -116,6 +116,10 @@
     return scalarType->isValidEnumStorageType();
 }
 
+bool Type::isElidableType() const {
+    return false;
+}
+
 std::string Type::getCppType(StorageMode, bool) const {
     CHECK(!"Should not be here");
     return std::string();
diff --git a/Type.h b/Type.h
index 7f53339..a9412d4 100644
--- a/Type.h
+++ b/Type.h
@@ -56,6 +56,7 @@
     virtual std::string typeName() const;
 
     bool isValidEnumStorageType() const;
+    virtual bool isElidableType() const;
 
     enum StorageMode {
         StorageMode_Stack,
