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