Merge "Refactor interface and enum type- and parent-related methods"
diff --git a/Reference.h b/Reference.h
index afd74cb..1728a91 100644
--- a/Reference.h
+++ b/Reference.h
@@ -42,13 +42,6 @@
     Reference(const Reference& ref)
         : mResolved(ref.mResolved), mFqName(ref.mFqName), mLocation(ref.mLocation) {}
 
-    /* Storing type cast, valid only before resolving */
-    template <class OtherT>
-    Reference(const Reference<OtherT>& ref)
-        : mResolved(nullptr), mFqName(ref.mFqName), mLocation(ref.mLocation) {
-        CHECK(!ref.isResolved());
-    }
-
     /* Returns true iff referred type is resolved
        Referred type's field might be not resolved */
     bool isResolved() const { return mResolved != nullptr; }
@@ -62,8 +55,6 @@
         return mResolved;
     }
 
-    void clearResolved() { mResolved = nullptr; }
-
     void set(T* resolved) {
         CHECK(!isResolved());
         CHECK(resolved != nullptr);
diff --git a/hidl-gen_y.yy b/hidl-gen_y.yy
index cf6b090..b7b6176 100644
--- a/hidl-gen_y.yy
+++ b/hidl-gen_y.yy
@@ -562,6 +562,8 @@
       }
     | EXTENDS fqtype
       {
+          // TODO(b/31827278)
+          // While deleting lookup calls, move this check
           if (!(*$2)->isInterface()) {
               std::cerr << "ERROR: You can only extend interfaces. at " << @2
                         << "\n";
@@ -569,24 +571,7 @@
               YYERROR;
           }
 
-          // TODO(b/31827278)
-          // While deleting lookup calls, clear this messy conversion
-          $2->clearResolved();
-          $$ = new Reference<Interface>(*$2);
-
-          Type* type = ast->lookupType($$->getLookupFqName(), *scope);
-          if (type == nullptr) {
-              std::cerr << "ERROR: Failed to lookup type '" << $$->getLookupFqName().string() << "' at "
-                        << @2
-                        << "\n";
-              YYERROR;
-          }
-          if (!type->isInterface()) {
-              std::cerr << "ERROR: You can only extend interfaces. at " << @2
-                        << "\n";
-              YYERROR;
-          }
-          $$->set(static_cast<Interface*>(type));
+          $$ = new Reference<Interface>(static_cast<Interface*>($2->get()), $2->getLocation());
       }
 
 interface_declarations