Index: src/AST/Expr.cpp
===================================================================
--- src/AST/Expr.cpp	(revision 1cc5c6ad3eddc42bd30039e07b17b59bafd8a5e5)
+++ src/AST/Expr.cpp	(revision 1fb0a883af54d021e91c232a243e29af394350ff)
@@ -283,16 +283,13 @@
 : Expr( loc, new BasicType{ BasicKind::LongUnsignedInt } ), type( t ) {}
 
-// --- CountExpr
-
-CountExpr::CountExpr( const CodeLocation & loc, const Expr * e )
-: Expr( loc, new BasicType( BasicKind::LongUnsignedInt) ), expr(e), type( nullptr ) {}
-
-CountExpr::CountExpr( const CodeLocation & loc, const Type * t )
-: Expr( loc, new BasicType( BasicKind::LongUnsignedInt) ), expr(nullptr), type( t ) {}
-
 // --- AlignofExpr
 
 AlignofExpr::AlignofExpr( const CodeLocation & loc, const Type * t )
 : Expr( loc, new BasicType{ BasicKind::LongUnsignedInt } ), type( t ) {}
+
+// --- CountofExpr
+
+CountofExpr::CountofExpr( const CodeLocation & loc, const Type * t )
+: Expr( loc, new BasicType( BasicKind::LongUnsignedInt) ), type( t ) {}
 
 // --- OffsetofExpr
Index: src/AST/Expr.hpp
===================================================================
--- src/AST/Expr.hpp	(revision 1cc5c6ad3eddc42bd30039e07b17b59bafd8a5e5)
+++ src/AST/Expr.hpp	(revision 1fb0a883af54d021e91c232a243e29af394350ff)
@@ -490,18 +490,4 @@
 };
 
-class CountExpr final : public Expr {
-public:
-	ptr<Expr> expr;
-	ptr<Type> type;
-
-	CountExpr( const CodeLocation & loc, const Expr * t );
-	CountExpr( const CodeLocation & loc, const Type * t );
-
-	const Expr * accept( Visitor & v )const override { return v.visit( this ); }
-private:
-	CountExpr * clone() const override { return new CountExpr( *this ); }
-	MUTATE_FRIEND
-};
-
 /// alignof expression, e.g. `alignof(int)`, `alignof 3+4`
 class AlignofExpr final : public Expr {
@@ -514,4 +500,17 @@
 private:
 	AlignofExpr * clone() const override { return new AlignofExpr{ *this }; }
+	MUTATE_FRIEND
+};
+
+/// countof expression, e.g. `countof(AnEnum)`, `countof pred(Head)`
+class CountofExpr final : public Expr {
+public:
+	ptr<Type> type;
+
+	CountofExpr( const CodeLocation & loc, const Type * t );
+
+	const Expr * accept( Visitor & v ) const override { return v.visit( this ); }
+private:
+	CountofExpr * clone() const override { return new CountofExpr( *this ); }
 	MUTATE_FRIEND
 };
Index: src/AST/Fwd.hpp
===================================================================
--- src/AST/Fwd.hpp	(revision 1cc5c6ad3eddc42bd30039e07b17b59bafd8a5e5)
+++ src/AST/Fwd.hpp	(revision 1fb0a883af54d021e91c232a243e29af394350ff)
@@ -86,6 +86,6 @@
 class ConstantExpr;
 class SizeofExpr;
-class CountExpr;
 class AlignofExpr;
+class CountofExpr;
 class UntypedOffsetofExpr;
 class OffsetofExpr;
Index: src/AST/Pass.hpp
===================================================================
--- src/AST/Pass.hpp	(revision 1cc5c6ad3eddc42bd30039e07b17b59bafd8a5e5)
+++ src/AST/Pass.hpp	(revision 1fb0a883af54d021e91c232a243e29af394350ff)
@@ -173,6 +173,6 @@
 	const ast::Expr *             visit( const ast::ConstantExpr         * ) override final;
 	const ast::Expr *             visit( const ast::SizeofExpr           * ) override final;
-	const ast::Expr *             visit( const ast::CountExpr            * ) override final;
 	const ast::Expr *             visit( const ast::AlignofExpr          * ) override final;
+	const ast::Expr *             visit( const ast::CountofExpr          * ) override final;
 	const ast::Expr *             visit( const ast::UntypedOffsetofExpr  * ) override final;
 	const ast::Expr *             visit( const ast::OffsetofExpr         * ) override final;
Index: src/AST/Pass.impl.hpp
===================================================================
--- src/AST/Pass.impl.hpp	(revision 1cc5c6ad3eddc42bd30039e07b17b59bafd8a5e5)
+++ src/AST/Pass.impl.hpp	(revision 1fb0a883af54d021e91c232a243e29af394350ff)
@@ -1350,23 +1350,4 @@
 
 //--------------------------------------------------------------------------
-// CountExpr
-template< typename core_t >
-const ast::Expr * ast::Pass< core_t >::visit( const ast::CountExpr * node ) {
-	VISIT_START( node );
-	if ( __visit_children() ) {
-		{
-			guard_symtab guard { *this };
-			maybe_accept( node, &CountExpr::result );
-		}
-		if ( node->type ) {
-			maybe_accept( node, &CountExpr::type );
-		} else {
-			maybe_accept( node, &CountExpr::expr );
-		}
-	}
-	VISIT_END( Expr, node );
-}
-
-//--------------------------------------------------------------------------
 // AlignofExpr
 template< typename core_t >
@@ -1380,4 +1361,21 @@
 		}
 		maybe_accept( node, &AlignofExpr::type );
+	}
+
+	VISIT_END( Expr, node );
+}
+
+//--------------------------------------------------------------------------
+// CountofExpr
+template< typename core_t >
+const ast::Expr * ast::Pass< core_t >::visit( const ast::CountofExpr * node ) {
+	VISIT_START( node );
+
+	if ( __visit_children() ) {
+		{
+			guard_symtab guard { *this };
+			maybe_accept( node, &CountofExpr::result );
+		}
+		maybe_accept( node, &CountofExpr::type );
 	}
 
Index: src/AST/Print.cpp
===================================================================
--- src/AST/Print.cpp	(revision 1cc5c6ad3eddc42bd30039e07b17b59bafd8a5e5)
+++ src/AST/Print.cpp	(revision 1fb0a883af54d021e91c232a243e29af394350ff)
@@ -1207,9 +1207,8 @@
 	}
 
-	virtual const ast::Expr * visit( const ast::CountExpr * node ) override final {
+	virtual const ast::Expr * visit( const ast::CountofExpr * node ) override final {
 		os << "Count Expression on: ";
 		++indent;
-		if ( node->type ) node->type->accept( *this );
-		else safe_print( node->expr );
+		safe_print( node->type );
 		--indent;
 		postprint( node );
Index: src/AST/Visitor.hpp
===================================================================
--- src/AST/Visitor.hpp	(revision 1cc5c6ad3eddc42bd30039e07b17b59bafd8a5e5)
+++ src/AST/Visitor.hpp	(revision 1fb0a883af54d021e91c232a243e29af394350ff)
@@ -76,6 +76,6 @@
     virtual const ast::Expr *             visit( const ast::ConstantExpr         * ) = 0;
     virtual const ast::Expr *             visit( const ast::SizeofExpr           * ) = 0;
-    virtual const ast::Expr *             visit( const ast::CountExpr            * ) = 0;
     virtual const ast::Expr *             visit( const ast::AlignofExpr          * ) = 0;
+    virtual const ast::Expr *             visit( const ast::CountofExpr          * ) = 0;
     virtual const ast::Expr *             visit( const ast::UntypedOffsetofExpr  * ) = 0;
     virtual const ast::Expr *             visit( const ast::OffsetofExpr         * ) = 0;
Index: src/CodeGen/CodeGenerator.cpp
===================================================================
--- src/CodeGen/CodeGenerator.cpp	(revision 1cc5c6ad3eddc42bd30039e07b17b59bafd8a5e5)
+++ src/CodeGen/CodeGenerator.cpp	(revision 1fb0a883af54d021e91c232a243e29af394350ff)
@@ -251,5 +251,6 @@
 
 	if ( decl->init ) {
-		output << " = ";
+		bool isGenericInit = options.genC || decl->init->maybeConstructed;
+		output << ( (isGenericInit) ? " = " : " @= " );
 		decl->init->accept( *visitor );
 	}
Index: src/Common/CodeLocationTools.cpp
===================================================================
--- src/Common/CodeLocationTools.cpp	(revision 1cc5c6ad3eddc42bd30039e07b17b59bafd8a5e5)
+++ src/Common/CodeLocationTools.cpp	(revision 1fb0a883af54d021e91c232a243e29af394350ff)
@@ -154,6 +154,6 @@
     macro(ConstantExpr, Expr) \
     macro(SizeofExpr, Expr) \
-    macro(CountExpr, Expr ) \
     macro(AlignofExpr, Expr) \
+    macro(CountofExpr, Expr ) \
     macro(UntypedOffsetofExpr, Expr) \
     macro(OffsetofExpr, Expr) \
Index: src/Parser/parser.yy
===================================================================
--- src/Parser/parser.yy	(revision 1cc5c6ad3eddc42bd30039e07b17b59bafd8a5e5)
+++ src/Parser/parser.yy	(revision 1fb0a883af54d021e91c232a243e29af394350ff)
@@ -946,7 +946,7 @@
 		}
 	| COUNTOF unary_expression
-		{ $$ = new ExpressionNode( new ast::CountExpr( yylloc, maybeMoveBuild( $2 ) ) ); }
+		{ $$ = new ExpressionNode( new ast::CountofExpr( yylloc, new ast::TypeofType( maybeMoveBuild( $2 ) ) ) ); }
 	| COUNTOF '(' type_no_function ')'
-		{ $$ = new ExpressionNode( new ast::CountExpr( yylloc, maybeMoveBuildType( $3 ) ) ); }
+		{ $$ = new ExpressionNode( new ast::CountofExpr( yylloc, maybeMoveBuildType( $3 ) ) ); }
 	;
 
Index: src/ResolvExpr/CandidateFinder.cpp
===================================================================
--- src/ResolvExpr/CandidateFinder.cpp	(revision 1cc5c6ad3eddc42bd30039e07b17b59bafd8a5e5)
+++ src/ResolvExpr/CandidateFinder.cpp	(revision 1fb0a883af54d021e91c232a243e29af394350ff)
@@ -672,4 +672,5 @@
 		void postvisit( const ast::SizeofExpr * sizeofExpr );
 		void postvisit( const ast::AlignofExpr * alignofExpr );
+		void postvisit( const ast::CountofExpr * countExpr );
 		void postvisit( const ast::AddressExpr * addressExpr );
 		void postvisit( const ast::LabelAddressExpr * labelExpr );
@@ -697,5 +698,4 @@
 		void postvisit( const ast::UntypedInitExpr * initExpr );
 		void postvisit( const ast::QualifiedNameExpr * qualifiedExpr );
-		void postvisit( const ast::CountExpr * countExpr );
 
 		void postvisit( const ast::InitExpr * ) {
@@ -941,5 +941,4 @@
 		}
 	}
-	
 
 	/// Adds aggregate member interpretations
@@ -1269,5 +1268,5 @@
 					? conversionCost( fromType, toType, cand->expr->get_lvalue(), symtab, cand->env )
 					: castCost( fromType, toType, cand->expr->get_lvalue(), symtab, cand->env );
-			
+
 			// Redefine enum cast
 			auto argAsEnum = fromType.as<ast::EnumInstType>();
@@ -1493,20 +1492,13 @@
 	}
 
-	void Finder::postvisit( const ast::CountExpr * countExpr ) {
-		const ast::UntypedExpr * untyped = nullptr;
-		if ( countExpr->type ) {
-			auto enumInst = countExpr->type.as<ast::EnumInstType>();
-			if ( enumInst ) {
-				addCandidate( ast::ConstantExpr::from_ulong(countExpr->location, enumInst->base->members.size()), tenv );
-				return;
-			}
-			auto untypedFirst = ast::UntypedExpr::createCall( countExpr->location, "lowerBound", {} );
-			auto castFirst = new ast::CastExpr( countExpr->location, untypedFirst , countExpr->type );
-			untyped = ast::UntypedExpr::createCall(
-				countExpr->location, "Countof", { castFirst }
-			);
-		}
-		if (!untyped) untyped = ast::UntypedExpr::createCall(
-				countExpr->location, "Countof", { countExpr->expr }
+	void Finder::postvisit( const ast::CountofExpr * countExpr ) {
+		if ( auto enumInst = countExpr->type.as<ast::EnumInstType>() ) {
+			addCandidate( ast::ConstantExpr::from_ulong( countExpr->location, enumInst->base->members.size()), tenv );
+			return;
+		}
+		auto untypedFirst = ast::UntypedExpr::createCall( countExpr->location, "lowerBound", {} );
+		auto castFirst = new ast::CastExpr( countExpr->location, untypedFirst , countExpr->type );
+		const ast::UntypedExpr * untyped = ast::UntypedExpr::createCall(
+			countExpr->location, "Countof", { castFirst }
 		);
 		CandidateFinder finder( context, tenv );
@@ -1514,8 +1506,8 @@
 		CandidateList winners = findMinCost( finder.candidates );
 		if ( winners.size() == 0 ) {
-			SemanticError( countExpr->expr, "Countof is not implemented for operand: " );
-		}
-		if ( winners.size() !=  1 ) {
-			SemanticError( countExpr->expr, "Ambiguous expression in countof operand: " );
+			SemanticError( countExpr, "Countof is not implemented: " );
+		}
+		if ( winners.size() != 1 ) {
+			SemanticError( countExpr, "Ambiguous expression in countof: " );
 		}
 		CandidateRef & choice = winners.front();
Index: tests/arithmeticConversions.cfa
===================================================================
--- tests/arithmeticConversions.cfa	(revision 1cc5c6ad3eddc42bd30039e07b17b59bafd8a5e5)
+++ tests/arithmeticConversions.cfa	(revision 1fb0a883af54d021e91c232a243e29af394350ff)
@@ -98,16 +98,20 @@
 	printf( "%6s %2zd | %4zd %4zd %4zd %4zd %4zd %4zd %4zd %4zd %4zd %4zd %4zd\n",
 		ST(f64xc), SZ(f64xc), SZ(f64xc + c), SZ(f64xc + sc), SZ(f64xc + uc), SZ(f64xc + ssi), SZ(f64xc + usi), SZ(f64xc + si), SZ(f64xc + ui), SZ(f64xc + sli), SZ(f64xc + ulli), SZ(f64xc + ulli), SZ(f64xc + ulli) );
-#if defined(__i386__) || defined(__ia64__) || defined(__x86_64__)
+
+	#if defined(__i386__) || defined(__ia64__) || defined(__x86_64__)
 	printf( "%6s %2zd | %4zd %4zd %4zd %4zd %4zd %4zd %4zd %4zd %4zd %4zd %4zd\n",
 		ST(f80), SZ(f80), SZ(f80 + c), SZ(f80 + sc), SZ(f80 + uc), SZ(f80 + ssi), SZ(f80 + usi), SZ(f80 + si), SZ(f80 + ui), SZ(f80 + sli), SZ(f80 + ulli), SZ(f80 + ulli), SZ(f80 + ulli) );
-#endif
+	#endif
+
 	printf( "%6s %2zd | %4zd %4zd %4zd %4zd %4zd %4zd %4zd %4zd %4zd %4zd %4zd\n",
 		ST(ld), SZ(ld), SZ(ld + c), SZ(ld + sc), SZ(ld + uc), SZ(ld + ssi), SZ(ld + usi), SZ(ld + si), SZ(ld + ui), SZ(ld + sli), SZ(ld + ulli), SZ(ld + ulli), SZ(ld + ulli) );
 	printf( "%6s %2zd | %4zd %4zd %4zd %4zd %4zd %4zd %4zd %4zd %4zd %4zd %4zd\n",
 		ST(ldc), SZ(ldc), SZ(ldc + c), SZ(ldc + sc), SZ(ldc + uc), SZ(ldc + ssi), SZ(ldc + usi), SZ(ldc + si), SZ(ldc + ui), SZ(ldc + sli), SZ(ldc + ulli), SZ(ldc + ulli), SZ(ldc + ulli) );
-#if defined(__i386__) || defined(__ia64__) || defined(__x86_64__)
+
+	#if defined(__i386__) || defined(__ia64__) || defined(__x86_64__)
 	printf( "%6s %2zd | %4zd %4zd %4zd %4zd %4zd %4zd %4zd %4zd %4zd %4zd %4zd\n",
 		ST(uuf128), SZ(uuf128), SZ(uuf128 + c), SZ(uuf128 + sc), SZ(uuf128 + uc), SZ(uuf128 + ssi), SZ(uuf128 + usi), SZ(uuf128 + si), SZ(uuf128 + ui), SZ(uuf128 + sli), SZ(uuf128 + ulli), SZ(uuf128 + ulli), SZ(uuf128 + ulli) );
-#endif
+	#endif
+
 	printf( "%6s %2zd | %4zd %4zd %4zd %4zd %4zd %4zd %4zd %4zd %4zd %4zd %4zd\n",
 		ST(f128), SZ(f128), SZ(f128 + c), SZ(f128 + sc), SZ(f128 + uc), SZ(f128 + ssi), SZ(f128 + usi), SZ(f128 + si), SZ(f128 + ui), SZ(f128 + sli), SZ(f128 + ulli), SZ(f128 + ulli), SZ(f128 + ulli) );
@@ -146,16 +150,20 @@
 	printf( "%6s %2zd | %5zd %5zd %5zd %5zd %5zd %5zd %5zd %5zd %5zd %5zd %5zd %5zd" OPT1(" %5zd") " %5zd %5zd" OPT1(" %6zd") " %5zd %5zd\n",
 		ST(f64xc), SZ(f64xc), SZ(f64xc + f32), SZ(f64xc + f32c), SZ(f64xc + f), SZ(f64xc + fc), SZ(f64xc + f32x), SZ(f64xc + f32xc), SZ(f64xc + f64), SZ(f64xc + f64c), SZ(f64xc + d), SZ(f64xc + dc), SZ(f64xc + f64x), SZ(f64xc + f64xc) OPT2(, SZ(f64xc + f80)), SZ(f64xc + ld), SZ(f64xc + ldc) OPT2(, SZ(f64xc + uuf128)), SZ(f64xc + f128), SZ(f64xc + f128c) );
-#if defined(__i386__) || defined(__ia64__) || defined(__x86_64__)
+
+	#if defined(__i386__) || defined(__ia64__) || defined(__x86_64__)
 	printf( "%6s %2zd | %5zd %5zd %5zd %5zd %5zd %5zd %5zd %5zd %5zd %5zd %5zd %5zd %5zd %5zd %5zd %6zd %5zd %5zd\n",
 			ST(f80), SZ(f80), SZ(f80 + f32), SZ(f80 + f32c), SZ(f80 + f), SZ(f80 + fc), SZ(f80 + f32x), SZ(f80 + f32xc), SZ(f80 + f64), SZ(f80 + f64c), SZ(f80 + d), SZ(f80 + dc), SZ(f80 + f64x), SZ(f80 + f64xc), SZ(f80 + f80), SZ(f80 + ld), SZ(f80 + ldc), SZ(f80 + uuf128), SZ(f80 + f128), SZ(f80 + f128c) );
-#endif
+	#endif
+
 	printf( "%6s %2zd | %5zd %5zd %5zd %5zd %5zd %5zd %5zd %5zd %5zd %5zd %5zd %5zd" OPT1(" %5zd") " %5zd %5zd" OPT1(" %6zd") " %5zd %5zd\n",
 		ST(ld), SZ(ld), SZ(ld + f32), SZ(ld + f32c), SZ(ld + f), SZ(ld + fc), SZ(ld + f32x), SZ(ld + f32xc), SZ(ld + f64), SZ(ld + f64c), SZ(ld + d), SZ(ld + dc), SZ(ld + f64x), SZ(ld + f64xc) OPT2(, SZ(ld + f80)), SZ(ld + ld), SZ(ld + ldc) OPT2(, SZ(ld + uuf128)), SZ(ld + f128), SZ(ld + f128c) );
 	printf( "%6s %2zd | %5zd %5zd %5zd %5zd %5zd %5zd %5zd %5zd %5zd %5zd %5zd %5zd" OPT1(" %5zd") " %5zd %5zd" OPT1(" %6zd") " %5zd %5zd\n",
 		ST(ldc), SZ(ldc), SZ(ldc + f32), SZ(ldc + f32c), SZ(ldc + f), SZ(ldc + fc), SZ(ldc + f32x), SZ(ldc + f32xc), SZ(ldc + f64), SZ(ldc + f64c), SZ(ldc + d), SZ(ldc + dc), SZ(ldc + f64x), SZ(ldc + f64xc) OPT2(, SZ(ldc + f80)), SZ(ldc + ld), SZ(ldc + ldc) OPT2(, SZ(ldc + uuf128)), SZ(ldc + f128), SZ(ldc + f128c) );
-#if defined(__i386__) || defined(__ia64__) || defined(__x86_64__)
+
+	#if defined(__i386__) || defined(__ia64__) || defined(__x86_64__)
 	printf( "%6s %2zd | %5zd %5zd %5zd %5zd %5zd %5zd %5zd %5zd %5zd %5zd %5zd %5zd %5zd %5zd %5zd %6zd %5zd %5zd\n",
 		ST(uuf128), SZ(uuf128), SZ(uuf128 + f32), SZ(uuf128 + f32c), SZ(uuf128 + f), SZ(uuf128 + fc), SZ(uuf128 + f32x), SZ(uuf128 + f32xc), SZ(uuf128 + f64), SZ(uuf128 + f64c), SZ(uuf128 + d), SZ(uuf128 + dc), SZ(uuf128 + f64x), SZ(uuf128 + f64xc), SZ(uuf128 + f80), SZ(uuf128 + ld), SZ(uuf128 + ldc), SZ(uuf128 + uuf128), SZ(uuf128 + f128), SZ(uuf128 + f128c) );
-#endif
+	#endif
+
 	printf( "%6s %2zd | %5zd %5zd %5zd %5zd %5zd %5zd %5zd %5zd %5zd %5zd %5zd %5zd" OPT1(" %5zd") " %5zd %5zd" OPT1(" %6zd") " %5zd %5zd\n",
 		ST(f128), SZ(f128), SZ(f128 + f32), SZ(f128 + f32c), SZ(f128 + f), SZ(f128 + fc), SZ(f128 + f32x), SZ(f128 + f32xc), SZ(f128 + f64), SZ(f128 + f64c), SZ(f128 + d), SZ(f128 + dc), SZ(f128 + f64x), SZ(f128 + f64xc) OPT2(, SZ(f128 + f80)), SZ(f128 + ld), SZ(f128 + ldc) OPT2(, SZ(f128 + uuf128)), SZ(f128 + f128), SZ(f128 + f128c) );
Index: sts/io/.in/eofBool.1.txt
===================================================================
--- tests/io/.in/eofBool.1.txt	(revision 1cc5c6ad3eddc42bd30039e07b17b59bafd8a5e5)
+++ 	(revision )
@@ -1,1 +1,0 @@
-    false   false  true
Index: sts/io/.in/eofBool.2.txt
===================================================================
--- tests/io/.in/eofBool.2.txt	(revision 1cc5c6ad3eddc42bd30039e07b17b59bafd8a5e5)
+++ 	(revision )
@@ -1,1 +1,0 @@
-    false  true   false
Index: sts/io/.in/eofChar.1.txt
===================================================================
--- tests/io/.in/eofChar.1.txt	(revision 1cc5c6ad3eddc42bd30039e07b17b59bafd8a5e5)
+++ 	(revision )
@@ -1,1 +1,0 @@
-abc
Index: sts/io/.in/eofChar.2.txt
===================================================================
--- tests/io/.in/eofChar.2.txt	(revision 1cc5c6ad3eddc42bd30039e07b17b59bafd8a5e5)
+++ 	(revision )
@@ -1,1 +1,0 @@
-abc
Index: sts/io/.in/eofComplex.1.txt
===================================================================
--- tests/io/.in/eofComplex.1.txt	(revision 1cc5c6ad3eddc42bd30039e07b17b59bafd8a5e5)
+++ 	(revision )
@@ -1,1 +1,0 @@
-1.5+1.0 2.5+1.0 3.5+1.0
Index: sts/io/.in/eofComplex.2.txt
===================================================================
--- tests/io/.in/eofComplex.2.txt	(revision 1cc5c6ad3eddc42bd30039e07b17b59bafd8a5e5)
+++ 	(revision )
@@ -1,1 +1,0 @@
-1.5+1.0 2.5+1.0 3.5+1.0
Index: sts/io/.in/eofDouble.1.txt
===================================================================
--- tests/io/.in/eofDouble.1.txt	(revision 1cc5c6ad3eddc42bd30039e07b17b59bafd8a5e5)
+++ 	(revision )
@@ -1,1 +1,0 @@
-1.5 2.5 3.5
Index: sts/io/.in/eofDouble.2.txt
===================================================================
--- tests/io/.in/eofDouble.2.txt	(revision 1cc5c6ad3eddc42bd30039e07b17b59bafd8a5e5)
+++ 	(revision )
@@ -1,1 +1,0 @@
-1.5 2.5 3.5
Index: sts/io/.in/eofInt.1.txt
===================================================================
--- tests/io/.in/eofInt.1.txt	(revision 1cc5c6ad3eddc42bd30039e07b17b59bafd8a5e5)
+++ 	(revision )
@@ -1,1 +1,0 @@
-1 2 3
Index: sts/io/.in/eofInt.2.txt
===================================================================
--- tests/io/.in/eofInt.2.txt	(revision 1cc5c6ad3eddc42bd30039e07b17b59bafd8a5e5)
+++ 	(revision )
@@ -1,1 +1,0 @@
-1 2 3
Index: sts/io/.in/eofText.1.txt
===================================================================
--- tests/io/.in/eofText.1.txt	(revision 1cc5c6ad3eddc42bd30039e07b17b59bafd8a5e5)
+++ 	(revision )
@@ -1,1 +1,0 @@
-abcabcabc
Index: sts/io/.in/eofText.2.txt
===================================================================
--- tests/io/.in/eofText.2.txt	(revision 1cc5c6ad3eddc42bd30039e07b17b59bafd8a5e5)
+++ 	(revision )
@@ -1,1 +1,0 @@
-abcabcabc
Index: tests/io/.in/eofType.bool.1.txt
===================================================================
--- tests/io/.in/eofType.bool.1.txt	(revision 1fb0a883af54d021e91c232a243e29af394350ff)
+++ tests/io/.in/eofType.bool.1.txt	(revision 1fb0a883af54d021e91c232a243e29af394350ff)
@@ -0,0 +1,1 @@
+    false   false  true
Index: tests/io/.in/eofType.bool.2.txt
===================================================================
--- tests/io/.in/eofType.bool.2.txt	(revision 1fb0a883af54d021e91c232a243e29af394350ff)
+++ tests/io/.in/eofType.bool.2.txt	(revision 1fb0a883af54d021e91c232a243e29af394350ff)
@@ -0,0 +1,1 @@
+    false  true   false
Index: tests/io/.in/eofType.char.1.txt
===================================================================
--- tests/io/.in/eofType.char.1.txt	(revision 1fb0a883af54d021e91c232a243e29af394350ff)
+++ tests/io/.in/eofType.char.1.txt	(revision 1fb0a883af54d021e91c232a243e29af394350ff)
@@ -0,0 +1,1 @@
+abc
Index: tests/io/.in/eofType.char.2.txt
===================================================================
--- tests/io/.in/eofType.char.2.txt	(revision 1fb0a883af54d021e91c232a243e29af394350ff)
+++ tests/io/.in/eofType.char.2.txt	(revision 1fb0a883af54d021e91c232a243e29af394350ff)
@@ -0,0 +1,1 @@
+abc
Index: tests/io/.in/eofType.complex.1.txt
===================================================================
--- tests/io/.in/eofType.complex.1.txt	(revision 1fb0a883af54d021e91c232a243e29af394350ff)
+++ tests/io/.in/eofType.complex.1.txt	(revision 1fb0a883af54d021e91c232a243e29af394350ff)
@@ -0,0 +1,1 @@
+1.5+1.0 2.5+1.0 3.5+1.0
Index: tests/io/.in/eofType.complex.2.txt
===================================================================
--- tests/io/.in/eofType.complex.2.txt	(revision 1fb0a883af54d021e91c232a243e29af394350ff)
+++ tests/io/.in/eofType.complex.2.txt	(revision 1fb0a883af54d021e91c232a243e29af394350ff)
@@ -0,0 +1,1 @@
+1.5+1.0 2.5+1.0 3.5+1.0
Index: tests/io/.in/eofType.double.1.txt
===================================================================
--- tests/io/.in/eofType.double.1.txt	(revision 1fb0a883af54d021e91c232a243e29af394350ff)
+++ tests/io/.in/eofType.double.1.txt	(revision 1fb0a883af54d021e91c232a243e29af394350ff)
@@ -0,0 +1,1 @@
+1.5 2.5 3.5
Index: tests/io/.in/eofType.double.2.txt
===================================================================
--- tests/io/.in/eofType.double.2.txt	(revision 1fb0a883af54d021e91c232a243e29af394350ff)
+++ tests/io/.in/eofType.double.2.txt	(revision 1fb0a883af54d021e91c232a243e29af394350ff)
@@ -0,0 +1,1 @@
+1.5 2.5 3.5
Index: tests/io/.in/eofType.int.1.txt
===================================================================
--- tests/io/.in/eofType.int.1.txt	(revision 1fb0a883af54d021e91c232a243e29af394350ff)
+++ tests/io/.in/eofType.int.1.txt	(revision 1fb0a883af54d021e91c232a243e29af394350ff)
@@ -0,0 +1,1 @@
+1 2 3
Index: tests/io/.in/eofType.int.2.txt
===================================================================
--- tests/io/.in/eofType.int.2.txt	(revision 1fb0a883af54d021e91c232a243e29af394350ff)
+++ tests/io/.in/eofType.int.2.txt	(revision 1fb0a883af54d021e91c232a243e29af394350ff)
@@ -0,0 +1,1 @@
+1 2 3
Index: tests/io/eofType.cfa
===================================================================
--- tests/io/eofType.cfa	(revision 1cc5c6ad3eddc42bd30039e07b17b59bafd8a5e5)
+++ tests/io/eofType.cfa	(revision 1fb0a883af54d021e91c232a243e29af394350ff)
@@ -10,6 +10,6 @@
 // Created On       : Wed Jan 22 07:41:41 2025
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Jan 22 08:45:51 2025
-// Update Count     : 8
+// Last Modified On : Thu Jan 23 14:33:08 2025
+// Update Count     : 9
 // 
 
@@ -33,5 +33,5 @@
 	ifstream testfile;
 	{
-		char * filenames[] = { INDIR "eofBool.1.txt", INDIR "eofBool.2.txt" };
+		char * filenames[] = { INDIR "eofType.bool.1.txt", INDIR "eofType.bool.2.txt" };
 		bool value;
 
@@ -50,5 +50,5 @@
 	}
 	{
-		char * filenames[] = { INDIR "eofChar.1.txt", INDIR "eofChar.2.txt" };
+		char * filenames[] = { INDIR "eofType.char.1.txt", INDIR "eofType.char.2.txt" };
 		char value;
 
@@ -67,5 +67,5 @@
 	}
 	{
-		char * filenames[] = { INDIR "eofInt.1.txt", INDIR "eofInt.2.txt" };
+		char * filenames[] = { INDIR "eofType.int.1.txt", INDIR "eofType.int.2.txt" };
 		int value;
 
@@ -84,5 +84,5 @@
 	}
 	{
-		char * filenames[] = { INDIR "eofDouble.1.txt", INDIR "eofDouble.2.txt" };
+		char * filenames[] = { INDIR "eofType.double.1.txt", INDIR "eofType.double.2.txt" };
 		double value;
 
@@ -101,5 +101,5 @@
 	}
 	{
-		char * filenames[] = { INDIR "eofComplex.1.txt", INDIR "eofComplex.2.txt" };
+		char * filenames[] = { INDIR "eofType.complex.1.txt", INDIR "eofType.complex.2.txt" };
 		_Complex value;
 
