Index: src/AST/Convert.cpp
===================================================================
--- src/AST/Convert.cpp	(revision f3cc5b6512f55846804a909de3b8735e14b2adef)
+++ src/AST/Convert.cpp	(revision b336af9cd762a8814b9d7682b1d48071815407d1)
@@ -135,5 +135,5 @@
 		decl->parent = parent;
 		decl->body   = old->body;
-		decl->parameters = params;
+		decl->params = params;
 		decl->members    = members;
 		decl->extension  = old->extension;
@@ -158,5 +158,5 @@
 		decl->parent = parent;
 		decl->body   = old->body;
-		decl->parameters = params;
+		decl->params = params;
 		decl->members    = members;
 		decl->extension  = old->extension;
@@ -181,5 +181,5 @@
 		decl->parent = parent;
 		decl->body   = old->body;
-		decl->parameters = params;
+		decl->params = params;
 		decl->members    = members;
 		decl->extension  = old->extension;
@@ -204,5 +204,5 @@
 		decl->parent = parent;
 		decl->body   = old->body;
-		decl->parameters = params;
+		decl->params = params;
 		decl->members    = members;
 		decl->extension  = old->extension;
@@ -230,5 +230,5 @@
 
 		decl->assertions = asserts;
-		decl->parameters = params;
+		decl->params = params;
 		decl->extension  = old->extension;
 		decl->uniqueId   = old->uniqueId;
@@ -591,4 +591,9 @@
 	virtual void visit( Attribute * ) override final {
 
+	}
+
+	virtual void visit( AttrExpr * ) override final {
+
+		assert( 0 );
 	}
 };
Index: src/AST/Pass.hpp
===================================================================
--- src/AST/Pass.hpp	(revision f3cc5b6512f55846804a909de3b8735e14b2adef)
+++ src/AST/Pass.hpp	(revision b336af9cd762a8814b9d7682b1d48071815407d1)
@@ -133,5 +133,4 @@
 	const ast::Expr *             visit( const ast::OffsetofExpr         * ) override final;
 	const ast::Expr *             visit( const ast::OffsetPackExpr       * ) override final;
-	const ast::Expr *             visit( const ast::AttrExpr             * ) override final;
 	const ast::Expr *             visit( const ast::LogicalExpr          * ) override final;
 	const ast::Expr *             visit( const ast::ConditionalExpr      * ) override final;
Index: src/AST/Pass.impl.hpp
===================================================================
--- src/AST/Pass.impl.hpp	(revision f3cc5b6512f55846804a909de3b8735e14b2adef)
+++ src/AST/Pass.impl.hpp	(revision b336af9cd762a8814b9d7682b1d48071815407d1)
@@ -462,5 +462,5 @@
 	VISIT({
 		guard_indexer guard { * this };
-		maybe_accept( node, &StructDecl::parameters );
+		maybe_accept( node, &StructDecl::params );
 		maybe_accept( node, &StructDecl::members    );
 	})
@@ -483,5 +483,5 @@
 	VISIT({
 		guard_indexer guard { * this };
-		maybe_accept( node, &UnionDecl::parameters );
+		maybe_accept( node, &UnionDecl::params );
 		maybe_accept( node, &UnionDecl::members    );
 	})
@@ -502,5 +502,5 @@
 	VISIT(
 		// unlike structs, traits, and unions, enums inject their members into the global scope
-		maybe_accept( node, &EnumDecl::parameters );
+		maybe_accept( node, &EnumDecl::params );
 		maybe_accept( node, &EnumDecl::members    );
 	)
@@ -517,5 +517,5 @@
 	VISIT({
 		guard_indexer guard { *this };
-		maybe_accept( node, &TraitDecl::parameters );
+		maybe_accept( node, &TraitDecl::params );
 		maybe_accept( node, &TraitDecl::members    );
 	})
@@ -534,5 +534,5 @@
 	VISIT({
 		guard_indexer guard { *this };
-		maybe_accept( node, &TypeDecl::parameters );
+		maybe_accept( node, &TypeDecl::params );
 		maybe_accept( node, &TypeDecl::base       );
 	})
@@ -563,5 +563,5 @@
 	VISIT({
 		guard_indexer guard { *this };
-		maybe_accept( node, &TypedefDecl::parameters );
+		maybe_accept( node, &TypedefDecl::params );
 		maybe_accept( node, &TypedefDecl::base       );
 	})
Index: src/AST/Pass.proto.hpp
===================================================================
--- src/AST/Pass.proto.hpp	(revision f3cc5b6512f55846804a909de3b8735e14b2adef)
+++ src/AST/Pass.proto.hpp	(revision b336af9cd762a8814b9d7682b1d48071815407d1)
@@ -247,5 +247,5 @@
 		static inline auto addStructFwd( pass_t & pass, int, const ast::StructDecl * decl ) -> decltype( pass.indexer.addStruct( decl ), void() ) {
 			ast::StructDecl * fwd = new ast::StructDecl( decl->location, decl->name );
-			fwd->parameters = decl->parameters;
+			fwd->params = decl->params;
 			pass.indexer.addStruct( fwd );
 		}
@@ -257,5 +257,5 @@
 		static inline auto addUnionFwd( pass_t & pass, int, const ast::UnionDecl * decl ) -> decltype( pass.indexer.addUnion( decl ), void() ) {
 			UnionDecl * fwd = new UnionDecl( decl->location, decl->name );
-			fwd->parameters = decl->parameters;
+			fwd->params = decl->params;
 			pass.indexer.addUnion( fwd );
 		}
