Index: src/AST/Convert.cpp
===================================================================
--- src/AST/Convert.cpp	(revision d4e338fddf256e4e69b2d4a7f3e8c0f4f4a7b054)
+++ src/AST/Convert.cpp	(revision 6a45bd78e92f655b09a86343cc1f6bc004cd951d)
@@ -233,5 +233,4 @@
 	const ast::Decl * namedTypePostamble( NamedTypeDecl * decl, const ast::NamedTypeDecl * node ) {
 		// base comes from constructor
-		decl->parameters = get<TypeDecl>().acceptL( node->params );
 		decl->assertions = get<DeclarationWithType>().acceptL( node->assertions );
 		declPostamble( decl, node );
@@ -1704,5 +1703,4 @@
 		cache.emplace( old, decl );
 		decl->assertions = GET_ACCEPT_V(assertions, DeclWithType);
-		decl->params     = GET_ACCEPT_V(parameters, TypeDecl);
 		decl->extension  = old->extension;
 		decl->uniqueId   = old->uniqueId;
@@ -1720,5 +1718,4 @@
 		);
 		decl->assertions = GET_ACCEPT_V(assertions, DeclWithType);
-		decl->params     = GET_ACCEPT_V(parameters, TypeDecl);
 		decl->extension  = old->extension;
 		decl->uniqueId   = old->uniqueId;
Index: src/AST/Decl.hpp
===================================================================
--- src/AST/Decl.hpp	(revision d4e338fddf256e4e69b2d4a7f3e8c0f4f4a7b054)
+++ src/AST/Decl.hpp	(revision 6a45bd78e92f655b09a86343cc1f6bc004cd951d)
@@ -154,5 +154,4 @@
 public:
 	ptr<Type> base;
-	std::vector<ptr<TypeDecl>> params;
 	std::vector<ptr<DeclWithType>> assertions;
 
@@ -160,5 +159,5 @@
 		const CodeLocation & loc, const std::string & name, Storage::Classes storage,
 		const Type * b, Linkage::Spec spec = Linkage::Cforall )
-	: Decl( loc, name, storage, spec ), base( b ), params(), assertions() {}
+	: Decl( loc, name, storage, spec ), base( b ), assertions() {}
 
 	/// Produces a name for the kind of alias
Index: src/AST/Pass.impl.hpp
===================================================================
--- src/AST/Pass.impl.hpp	(revision d4e338fddf256e4e69b2d4a7f3e8c0f4f4a7b054)
+++ src/AST/Pass.impl.hpp	(revision 6a45bd78e92f655b09a86343cc1f6bc004cd951d)
@@ -609,5 +609,4 @@
 	VISIT({
 		guard_symtab guard { *this };
-		maybe_accept( node, &TypeDecl::params );
 		maybe_accept( node, &TypeDecl::base   );
 	})
@@ -638,5 +637,4 @@
 	VISIT({
 		guard_symtab guard { *this };
-		maybe_accept( node, &TypedefDecl::params );
 		maybe_accept( node, &TypedefDecl::base   );
 	})
Index: src/AST/Print.cpp
===================================================================
--- src/AST/Print.cpp	(revision d4e338fddf256e4e69b2d4a7f3e8c0f4f4a7b054)
+++ src/AST/Print.cpp	(revision 6a45bd78e92f655b09a86343cc1f6bc004cd951d)
@@ -221,11 +221,4 @@
 			++indent;
 			node->base->accept( *this );
-			--indent;
-		}
-
-		if ( ! node->params.empty() ) {
-			os << endl << indent << "... with parameters" << endl;
-			++indent;
-			printAll( node->params );
 			--indent;
 		}
Index: src/Common/PassVisitor.impl.h
===================================================================
--- src/Common/PassVisitor.impl.h	(revision d4e338fddf256e4e69b2d4a7f3e8c0f4f4a7b054)
+++ src/Common/PassVisitor.impl.h	(revision 6a45bd78e92f655b09a86343cc1f6bc004cd951d)
@@ -835,5 +835,4 @@
 	{
 		auto guard = makeFuncGuard( [this]() { indexerScopeEnter(); }, [this]() { indexerScopeLeave(); } );
-		maybeAccept_impl( node->parameters, *this );
 		maybeAccept_impl( node->base      , *this );
 	}
@@ -858,5 +857,4 @@
 	{
 		auto guard = makeFuncGuard( [this]() { indexerScopeEnter(); }, [this]() { indexerScopeLeave(); } );
-		maybeAccept_impl( node->parameters, *this );
 		maybeAccept_impl( node->base      , *this );
 	}
@@ -880,5 +878,4 @@
 	{
 		auto guard = makeFuncGuard( [this]() { indexerScopeEnter(); }, [this]() { indexerScopeLeave(); } );
-		maybeMutate_impl( node->parameters, *this );
 		maybeMutate_impl( node->base      , *this );
 	}
@@ -904,5 +901,4 @@
 	{
 		auto guard = makeFuncGuard( [this]() { indexerScopeEnter(); }, [this]() { indexerScopeLeave(); } );
-		maybeAccept_impl( node->parameters, *this );
 		maybeAccept_impl( node->base      , *this );
 	}
@@ -921,5 +917,4 @@
 	{
 		auto guard = makeFuncGuard( [this]() { indexerScopeEnter(); }, [this]() { indexerScopeLeave(); } );
-		maybeAccept_impl( node->parameters, *this );
 		maybeAccept_impl( node->base      , *this );
 	}
@@ -938,5 +933,4 @@
 	{
 		auto guard = makeFuncGuard( [this]() { indexerScopeEnter(); }, [this]() { indexerScopeLeave(); } );
-		maybeMutate_impl( node->parameters, *this );
 		maybeMutate_impl( node->base      , *this );
 	}
Index: src/Parser/TypeData.cc
===================================================================
--- src/Parser/TypeData.cc	(revision d4e338fddf256e4e69b2d4a7f3e8c0f4f4a7b054)
+++ src/Parser/TypeData.cc	(revision 6a45bd78e92f655b09a86343cc1f6bc004cd951d)
@@ -900,5 +900,4 @@
 		ret = new TypeDecl( name, scs, typebuild( td->base ), TypeDecl::Dtype, true );
 	} // if
-	buildList( td->symbolic.params, ret->get_parameters() );
 	buildList( td->symbolic.assertions, ret->get_assertions() );
 	ret->base->attributes.splice( ret->base->attributes.end(), attributes );
Index: src/SynTree/Declaration.h
===================================================================
--- src/SynTree/Declaration.h	(revision d4e338fddf256e4e69b2d4a7f3e8c0f4f4a7b054)
+++ src/SynTree/Declaration.h	(revision 6a45bd78e92f655b09a86343cc1f6bc004cd951d)
@@ -181,5 +181,4 @@
   public:
 	Type * base;
-	std::list< TypeDecl * > parameters;
 	std::list< DeclarationWithType * > assertions;
 
@@ -190,5 +189,4 @@
 	Type * get_base() const { return base; }
 	void set_base( Type * newValue ) { base = newValue; }
-	std::list< TypeDecl* > & get_parameters() { return parameters; }
 	std::list< DeclarationWithType * >& get_assertions() { return assertions; }
 
Index: src/SynTree/NamedTypeDecl.cc
===================================================================
--- src/SynTree/NamedTypeDecl.cc	(revision d4e338fddf256e4e69b2d4a7f3e8c0f4f4a7b054)
+++ src/SynTree/NamedTypeDecl.cc	(revision 6a45bd78e92f655b09a86343cc1f6bc004cd951d)
@@ -29,5 +29,4 @@
 NamedTypeDecl::NamedTypeDecl( const NamedTypeDecl &other )
 	: Parent( other ), base( maybeClone( other.base ) ) {
-	cloneAll( other.parameters, parameters );
 	cloneAll( other.assertions, assertions );
 }
@@ -35,5 +34,4 @@
 NamedTypeDecl::~NamedTypeDecl() {
 	delete base;
-	deleteAll( parameters );
 	deleteAll( assertions );
 }
@@ -56,8 +54,4 @@
 		base->print( os, indent+1 );
 	} // if
-	if ( ! parameters.empty() ) {
-		os << endl << indent << "... with parameters" << endl;
-		printAll( parameters, os, indent+1 );
-	} // if
 	if ( ! assertions.empty() ) {
 		os << endl << indent << "... with assertions" << endl;
@@ -76,8 +70,4 @@
 		base->print( os, indent+1 );
 	} // if
-	if ( ! parameters.empty() ) {
-		os << endl << indent << "... with parameters" << endl;
-		printAll( parameters, os, indent+1 );
-	} // if
 }
 
