Index: src/SynTree/PointerType.cc
===================================================================
--- src/SynTree/PointerType.cc	(revision e39241b40d9f33c51659b3a67958a8fb1a2141fa)
+++ src/SynTree/PointerType.cc	(revision ed8a0d2378d457af8e5826c9d961a9d400fcc6c1)
@@ -5,5 +5,5 @@
 // file "LICENCE" distributed with Cforall.
 //
-// PointerType.cc -- 
+// PointerType.cc --
 //
 // Author           : Richard C. Bilson
@@ -38,14 +38,19 @@
 void PointerType::print( std::ostream &os, int indent ) const {
 	Type::print( os, indent );
-	os << "pointer to ";
-	if ( isStatic ) {
-		os << "static ";
-	} // if
-	if ( isVarLen ) {
-		os << "variable length array of ";
-	} else if ( dimension ) {
-		os << "array of ";
-		dimension->print( os, indent );
-	} // if
+	if ( ! is_array() ) {
+		os << "pointer to ";
+	} else {
+		os << "decayed ";
+		if ( isStatic ) {
+			os << "static ";
+		} // if
+		if ( isVarLen ) {
+			os << "variable length array of ";
+		} else if ( dimension ) {
+			os << "array of ";
+			dimension->print( os, indent );
+			os << " ";
+		} // if
+	}
 	if ( base ) {
 		base->print( os, indent );
Index: src/SynTree/Type.h
===================================================================
--- src/SynTree/Type.h	(revision e39241b40d9f33c51659b3a67958a8fb1a2141fa)
+++ src/SynTree/Type.h	(revision ed8a0d2378d457af8e5826c9d961a9d400fcc6c1)
@@ -247,4 +247,6 @@
 	void set_isStatic( bool newValue ) { isStatic = newValue; }
 
+	bool is_array() const { return isStatic || isVarLen || dimension; }
+
 	virtual PointerType *clone() const { return new PointerType( *this ); }
 	virtual void accept( Visitor & v ) { v.visit( this ); }
