From 6ffdca8595cb71c73452086f0fa93b6dce13d901 Mon Sep 17 00:00:00 2001
From: Ed_ <edwardgz@gmail.com>
Date: Fri, 13 Dec 2024 11:56:07 -0500
Subject: [PATCH] formatting, fixes from testing latest in Odin fork

---
 base/components/ast.hpp                | 45 +++++++++++++------------
 base/components/code_serialization.cpp |  2 +-
 base/components/code_types.hpp         |  2 +-
 base/components/gen/ast_inlines.hpp    | 46 +++++++++++++-------------
 base/components/parser.cpp             | 10 +++---
 base/helpers/base_codegen.hpp          |  2 +-
 gen_singleheader/singleheader.cpp      |  7 ++--
 7 files changed, 57 insertions(+), 57 deletions(-)

diff --git a/base/components/ast.hpp b/base/components/ast.hpp
index 0a60144..28e2c06 100644
--- a/base/components/ast.hpp
+++ b/base/components/ast.hpp
@@ -242,7 +242,7 @@ GEN_NS_PARSER_END
 // I have ideas for ways to pack that into the typedef/using ast, but for now just keeping it like this
 #define ParserTokenType GEN_NS_PARSER Token
 typedef ParserTokenType Token;
-#undef ParserTokenType
+#undef  ParserTokenType
 #endif
 
 #if GEN_COMPILER_CPP
@@ -251,19 +251,19 @@ template< class Type> forceinline Type tmpl_cast( Code self ) { return * rcast(
 
 #pragma region Code C-Interface
 
-void   code_append       (Code code, Code other );
-Str   code_debug_str    (Code code);
-Code   code_duplicate    (Code code);
-Code*  code_entry        (Code code, u32 idx );
-bool   code_has_entries  (Code code);
-bool   code_is_body      (Code code);
-bool   code_is_equal     (Code code, Code other);
-bool   code_is_valid     (Code code);
-void   code_set_global   (Code code);
-StrBuilder code_to_string    (Code self );
-void   code_to_strbuilder_ptr(Code self, StrBuilder* result );
-Str   code_type_str     (Code self );
-bool   code_validate_body(Code self );
+void       code_append           (Code code, Code other );
+Str        code_debug_str        (Code code);
+Code       code_duplicate        (Code code);
+Code*      code_entry            (Code code, u32 idx );
+bool       code_has_entries      (Code code);
+bool       code_is_body          (Code code);
+bool       code_is_equal         (Code code, Code other);
+bool       code_is_valid         (Code code);
+void       code_set_global       (Code code);
+StrBuilder code_to_string        (Code self );
+void       code_to_strbuilder_ptr(Code self, StrBuilder* result );
+Str        code_type_str         (Code self );
+bool       code_validate_body    (Code self );
 
 #pragma endregion Code C-Interface
 
@@ -278,7 +278,7 @@ struct Code
 	AST* ast;
 
 #	define Using_Code( Typename )                                                        \
-	forceinline Str debug_str()                { return code_debug_str(* this); }       \
+	forceinline Str  debug_str()                { return code_debug_str(* this); }       \
 	forceinline Code duplicate()                { return code_duplicate(* this); }	     \
 	forceinline bool is_equal( Code other )     { return code_is_equal(* this, other); } \
 	forceinline bool is_body()                  { return code_is_body(* this); }         \
@@ -295,16 +295,17 @@ struct Code
 
 #if ! GEN_C_LIKE_CPP
 	Using_Code( Code );
-	forceinline void   append(Code other)        { return code_append(* this, other); }
-	forceinline Code*  entry(u32 idx)            { return code_entry(* this, idx); }
-	forceinline bool   has_entries()             { return code_has_entries(* this); }
-	forceinline StrBuilder to_string()               { return code_to_string(* this); }
-	forceinline void   to_string(StrBuilder& result) { return code_to_strbuilder_ptr(* this, & result); }
-	forceinline Str   type_str()                { return code_type_str(* this); }
-	forceinline bool   validate_body()           { return code_validate_body(*this); }
+	forceinline void       append(Code other)            { return code_append(* this, other); }
+	forceinline Code*      entry(u32 idx)                { return code_entry(* this, idx); }
+	forceinline bool       has_entries()                 { return code_has_entries(* this); }
+	forceinline StrBuilder to_string()                   { return code_to_string(* this); }
+	forceinline void       to_string(StrBuilder& result) { return code_to_strbuilder_ptr(* this, & result); }
+	forceinline Str        type_str()                    { return code_type_str(* this); }
+	forceinline bool       validate_body()               { return code_validate_body(*this); }
 #endif
 
 	Using_CodeOps( Code );
+	forceinline Code operator *() { return * this; } // Required for for-range iteration.
 	forceinline AST* operator ->() { return ast; }
 
 	Code& operator ++();
diff --git a/base/components/code_serialization.cpp b/base/components/code_serialization.cpp
index d00bfaf..d000691 100644
--- a/base/components/code_serialization.cpp
+++ b/base/components/code_serialization.cpp
@@ -1414,7 +1414,7 @@ void var_to_strbuilder_ref(CodeVar self, StrBuilder* result )
 
 		strbuilder_append_fmt( result, "%SB %S", typename_to_string(self->ValueType), self->Name );
 
-		if ( self->ValueType->ArrExpr )
+		if ( self->ValueType && self->ValueType->ArrExpr )
 		{
 			strbuilder_append_fmt( result, "[ %SB ]", code_to_string(self->ValueType->ArrExpr) );
 
diff --git a/base/components/code_types.hpp b/base/components/code_types.hpp
index 04f6521..023c92d 100644
--- a/base/components/code_types.hpp
+++ b/base/components/code_types.hpp
@@ -161,9 +161,9 @@ struct CodeBody
 	forceinline void   to_string( StrBuilder& result )        { return body_to_strbuilder_ref(* this, & result ); }
 	forceinline void   to_strbuilder_export( StrBuilder& result ) { return body_to_strbuilder_export(* this, & result); }
 
+#endif
 	forceinline Code begin() { return begin_CodeBody(* this); }
 	forceinline Code end()   { return end_CodeBody(* this); }
-#endif
 	Using_CodeOps( CodeBody );
 	forceinline operator Code() { return * rcast( Code*, this ); }
 	forceinline AST_Body* operator->() { return ast; }
diff --git a/base/components/gen/ast_inlines.hpp b/base/components/gen/ast_inlines.hpp
index 148e477..46e80ed 100644
--- a/base/components/gen/ast_inlines.hpp
+++ b/base/components/gen/ast_inlines.hpp
@@ -64,7 +64,7 @@ inline AST_Attributes* CodeAttributes::operator->()
 {
 	if ( ast == nullptr )
 	{
-		log_failure( "Attempt to dereference a nullptr!" );
+		log_failure( "Attempt to dereference a nullptr!\n" );
 		return nullptr;
 	}
 	return ast;
@@ -95,7 +95,7 @@ inline AST_Comment* CodeComment::operator->()
 {
 	if ( ast == nullptr )
 	{
-		log_failure( "Attempt to dereference a nullptr!" );
+		log_failure( "Attempt to dereference a nullptr!\n" );
 		return nullptr;
 	}
 	return ast;
@@ -126,7 +126,7 @@ inline AST_Constructor* CodeConstructor::operator->()
 {
 	if ( ast == nullptr )
 	{
-		log_failure( "Attempt to dereference a nullptr!" );
+		log_failure( "Attempt to dereference a nullptr!\n" );
 		return nullptr;
 	}
 	return ast;
@@ -173,7 +173,7 @@ inline AST_Define* CodeDefine::operator->()
 {
 	if ( ast == nullptr )
 	{
-		log_failure( "Attempt to dereference a nullptr!" );
+		log_failure( "Attempt to dereference a nullptr!\n" );
 		return nullptr;
 	}
 	return ast;
@@ -204,7 +204,7 @@ inline AST_Destructor* CodeDestructor::operator->()
 {
 	if ( ast == nullptr )
 	{
-		log_failure( "Attempt to dereference a nullptr!" );
+		log_failure( "Attempt to dereference a nullptr!\n" );
 		return nullptr;
 	}
 	return ast;
@@ -235,7 +235,7 @@ inline AST_Enum* CodeEnum::operator->()
 {
 	if ( ast == nullptr )
 	{
-		log_failure( "Attempt to dereference a nullptr!" );
+		log_failure( "Attempt to dereference a nullptr!\n" );
 		return nullptr;
 	}
 	return ast;
@@ -266,7 +266,7 @@ inline AST_Exec* CodeExec::operator->()
 {
 	if ( ast == nullptr )
 	{
-		log_failure( "Attempt to dereference a nullptr!" );
+		log_failure( "Attempt to dereference a nullptr!\n" );
 		return nullptr;
 	}
 	return ast;
@@ -297,7 +297,7 @@ inline AST_Extern* CodeExtern::operator->()
 {
 	if ( ast == nullptr )
 	{
-		log_failure( "Attempt to dereference a nullptr!" );
+		log_failure( "Attempt to dereference a nullptr!\n" );
 		return nullptr;
 	}
 	return ast;
@@ -328,7 +328,7 @@ inline AST_Friend* CodeFriend::operator->()
 {
 	if ( ast == nullptr )
 	{
-		log_failure( "Attempt to dereference a nullptr!" );
+		log_failure( "Attempt to dereference a nullptr!\n" );
 		return nullptr;
 	}
 	return ast;
@@ -359,7 +359,7 @@ inline AST_Fn* CodeFn::operator->()
 {
 	if ( ast == nullptr )
 	{
-		log_failure( "Attempt to dereference a nullptr!" );
+		log_failure( "Attempt to dereference a nullptr!\n" );
 		return nullptr;
 	}
 	return ast;
@@ -390,7 +390,7 @@ inline AST_Include* CodeInclude::operator->()
 {
 	if ( ast == nullptr )
 	{
-		log_failure( "Attempt to dereference a nullptr!" );
+		log_failure( "Attempt to dereference a nullptr!\n" );
 		return nullptr;
 	}
 	return ast;
@@ -421,7 +421,7 @@ inline AST_Module* CodeModule::operator->()
 {
 	if ( ast == nullptr )
 	{
-		log_failure( "Attempt to dereference a nullptr!" );
+		log_failure( "Attempt to dereference a nullptr!\n" );
 		return nullptr;
 	}
 	return ast;
@@ -452,7 +452,7 @@ inline AST_NS* CodeNS::operator->()
 {
 	if ( ast == nullptr )
 	{
-		log_failure( "Attempt to dereference a nullptr!" );
+		log_failure( "Attempt to dereference a nullptr!\n" );
 		return nullptr;
 	}
 	return ast;
@@ -483,7 +483,7 @@ inline AST_Operator* CodeOperator::operator->()
 {
 	if ( ast == nullptr )
 	{
-		log_failure( "Attempt to dereference a nullptr!" );
+		log_failure( "Attempt to dereference a nullptr!\n" );
 		return nullptr;
 	}
 	return ast;
@@ -514,7 +514,7 @@ inline AST_OpCast* CodeOpCast::operator->()
 {
 	if ( ast == nullptr )
 	{
-		log_failure( "Attempt to dereference a nullptr!" );
+		log_failure( "Attempt to dereference a nullptr!\n" );
 		return nullptr;
 	}
 	return ast;
@@ -561,7 +561,7 @@ inline AST_Pragma* CodePragma::operator->()
 {
 	if ( ast == nullptr )
 	{
-		log_failure( "Attempt to dereference a nullptr!" );
+		log_failure( "Attempt to dereference a nullptr!\n" );
 		return nullptr;
 	}
 	return ast;
@@ -592,7 +592,7 @@ inline AST_PreprocessCond* CodePreprocessCond::operator->()
 {
 	if ( ast == nullptr )
 	{
-		log_failure( "Attempt to dereference a nullptr!" );
+		log_failure( "Attempt to dereference a nullptr!\n" );
 		return nullptr;
 	}
 	return ast;
@@ -655,7 +655,7 @@ inline AST_Template* CodeTemplate::operator->()
 {
 	if ( ast == nullptr )
 	{
-		log_failure( "Attempt to dereference a nullptr!" );
+		log_failure( "Attempt to dereference a nullptr!\n" );
 		return nullptr;
 	}
 	return ast;
@@ -686,7 +686,7 @@ inline AST_Typename* CodeTypename::operator->()
 {
 	if ( ast == nullptr )
 	{
-		log_failure( "Attempt to dereference a nullptr!" );
+		log_failure( "Attempt to dereference a nullptr!\n" );
 		return nullptr;
 	}
 	return ast;
@@ -717,7 +717,7 @@ inline AST_Typedef* CodeTypedef::operator->()
 {
 	if ( ast == nullptr )
 	{
-		log_failure( "Attempt to dereference a nullptr!" );
+		log_failure( "Attempt to dereference a nullptr!\n" );
 		return nullptr;
 	}
 	return ast;
@@ -748,7 +748,7 @@ inline AST_Union* CodeUnion::operator->()
 {
 	if ( ast == nullptr )
 	{
-		log_failure( "Attempt to dereference a nullptr!" );
+		log_failure( "Attempt to dereference a nullptr!\n" );
 		return nullptr;
 	}
 	return ast;
@@ -779,7 +779,7 @@ inline AST_Using* CodeUsing::operator->()
 {
 	if ( ast == nullptr )
 	{
-		log_failure( "Attempt to dereference a nullptr!" );
+		log_failure( "Attempt to dereference a nullptr!\n" );
 		return nullptr;
 	}
 	return ast;
@@ -810,7 +810,7 @@ inline AST_Var* CodeVar::operator->()
 {
 	if ( ast == nullptr )
 	{
-		log_failure( "Attempt to dereference a nullptr!" );
+		log_failure( "Attempt to dereference a nullptr!\n" );
 		return nullptr;
 	}
 	return ast;
diff --git a/base/components/parser.cpp b/base/components/parser.cpp
index 9ffdb8f..24376bf 100644
--- a/base/components/parser.cpp
+++ b/base/components/parser.cpp
@@ -124,7 +124,7 @@ bool lex__eat(TokArray* self, TokType type )
 			, tok.Column
 			, parser_to_string(Context)
 		);
-
+		GEN_DEBUG_TRAP();
 		return false;
 	}
 
@@ -515,7 +515,7 @@ Code parse_array_decl()
 
 	if ( check( Tok_Operator ) && currtok.Text[0] == '[' && currtok.Text[1] == ']' )
 	{
-		Code array_expr = untyped_str( tok_to_str(currtok) );
+		Code array_expr = untyped_str( txt(" ") );
 		eat( Tok_Operator );
 		// []
 
@@ -2391,7 +2391,7 @@ CodeOperator parse_operator_after_ret_type(
 		case '<':
 		{
 			if ( currtok.Text[1] == '=' )
-				op = Op_LEqual;
+				op = Op_LesserEqual;
 
 			else if ( currtok.Text[1] == '<' )
 			{
@@ -3428,12 +3428,12 @@ CodeVar parse_variable_declaration_list()
 				break;
 			}
 
-			// eat(currtok.Type);
-
 			if ( specifiers )
 				specifiers_append(specifiers, spec );
 			else
 				specifiers = def_specifier( spec );
+
+			eat(currtok.Type);
 		}
 		// , <Specifiers>
 
diff --git a/base/helpers/base_codegen.hpp b/base/helpers/base_codegen.hpp
index c3fdc37..68b6d55 100644
--- a/base/helpers/base_codegen.hpp
+++ b/base/helpers/base_codegen.hpp
@@ -505,7 +505,7 @@ CodeBody gen_ast_inlines()
 		{
 			if ( ast == nullptr )
 			{
-				log_failure( "Attempt to dereference a nullptr!" );
+				log_failure( "Attempt to dereference a nullptr!\n" );
 				return nullptr;
 			}
 			return ast;
diff --git a/gen_singleheader/singleheader.cpp b/gen_singleheader/singleheader.cpp
index 6e1a756..d5adc4d 100644
--- a/gen_singleheader/singleheader.cpp
+++ b/gen_singleheader/singleheader.cpp
@@ -176,9 +176,9 @@ int gen_main()
 			Code timing     = scan_file( path_base "dependencies/timing.cpp" );
 
 			header.print_fmt( roll_own_dependencies_guard_start );
+			header.print( impl_start );
 			header.print_fmt( "GEN_NS_BEGIN\n\n");
 
-			header.print( impl_start );
 			header.print( debug );
 			header.print( string_ops );
 			header.print( printing );
@@ -209,8 +209,7 @@ int gen_main()
 		Code parsing_interface = scan_file( path_base "components/interface.parsing.cpp" );
 		Code untyped           = scan_file( path_base "components/interface.untyped.cpp" );
 
-		CodeBody etoktype      = gen_etoktype( path_base "enums/ETokType.csv", path_base "enums/AttributeTokens.csv" );
-		CodeNS   parser_nspace = def_namespace( name(parser), def_namespace_body( args(etoktype)) );
+		CodeBody etoktype = gen_etoktype( path_base "enums/ETokType.csv", path_base "enums/AttributeTokens.csv" );
 
 		header.print_fmt( "\nGEN_NS_BEGIN\n");
 		header.print( static_data );
@@ -225,7 +224,7 @@ int gen_main()
 		header.print( interface );
 		header.print( upfront );
 		header.print_fmt( "\n#pragma region Parsing\n\n" );
-		header.print( format(parser_nspace) );
+		header.print( format(etoktype) );
 		header.print( lexer );
 		header.print( parser );
 		header.print( parsing_interface );