diff --git a/Scope.cpp b/Scope.cpp
index d4953aa..cfe004d 100644
--- a/Scope.cpp
+++ b/Scope.cpp
@@ -122,6 +122,16 @@
     return ret;
 }
 
+std::vector<const NamedType*> Scope::getSortedDefinedTypes() const {
+    std::vector<const NamedType*> ret;
+    ret.insert(ret.end(), mTypes.begin(), mTypes.end());
+
+    std::sort(ret.begin(), ret.end(), [](const NamedType* lhs, const NamedType* rhs) -> bool {
+        return lhs->location() < rhs->location();
+    });
+    return ret;
+}
+
 std::vector<const ConstantExpression*> Scope::getConstantExpressions() const {
     std::vector<const ConstantExpression*> ret;
     for (const auto* annotation : mAnnotations) {
@@ -146,6 +156,12 @@
     }
 }
 
+void Scope::emitHidlDefinition(Formatter& out) const {
+    const std::vector<const NamedType*>& definedTypes = getSortedDefinedTypes();
+    out.join(definedTypes.begin(), definedTypes.end(), "\n",
+             [&](auto t) { t->emitHidlDefinition(out); });
+}
+
 void Scope::emitTypeDeclarations(Formatter& out) const {
     if (mTypes.empty()) return;
 
