Index: src/SymTab/Validate.cc
===================================================================
--- src/SymTab/Validate.cc	(revision 48ed81cd8c41ddaf7edb958ec253a29ad6be20b8)
+++ src/SymTab/Validate.cc	(revision afcb0a3f35bcecbe54f6ba1e1d0b866ce121fbb6)
@@ -120,5 +120,5 @@
 
 	/// Associates forward declarations of aggregates with their definitions
-	struct LinkReferenceToTypes final : public WithIndexer, public WithGuards {
+	struct LinkReferenceToTypes final : public WithIndexer, public WithGuards, public WithVisitorRef<LinkReferenceToTypes>, public WithShortCircuiting {
 		LinkReferenceToTypes( const Indexer *indexer );
 		void postvisit( TypeInstType *typeInst );
@@ -128,4 +128,6 @@
 		void postvisit( UnionInstType *unionInst );
 		void postvisit( TraitInstType *traitInst );
+		void previsit( QualifiedType * qualType );
+		void postvisit( QualifiedType * qualType );
 
 		void postvisit( EnumDecl *enumDecl );
@@ -488,4 +490,13 @@
 		} // if
 		checkGenericParameters( unionInst );
+	}
+
+	void LinkReferenceToTypes::previsit( QualifiedType * ) {
+		visit_children = false;
+	}
+
+	void LinkReferenceToTypes::postvisit( QualifiedType * qualType ) {
+		// linking only makes sense for the 'oldest ancestor' of the qualified type
+		qualType->parent->accept( *visitor );
 	}
 
