From 7b34c2518af3006c0706d8158afd5f30ce56d802 Mon Sep 17 00:00:00 2001 From: heckerpowered <72550834+heckerpowered@users.noreply.github.com> Date: Mon, 22 Jul 2024 15:37:53 +0800 Subject: [PATCH 1/2] Add address sanitize to debug mode --- xmake.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/xmake.lua b/xmake.lua index e308a92..dd53db5 100644 --- a/xmake.lua +++ b/xmake.lua @@ -19,6 +19,9 @@ target("Jvav") set_optimize("fastest") end if is_mode("debug") then + add_cflags("-fsanitize=address") + add_ldflags("-fsanitize=address") + add_cxxflags("-fsanitize=address", "-fno-omit-frame-pointer", "-fno-optimize-sibling-calls") add_defines("DEBUG") end From 858184bd2045a884b0f8381e492b99d604c6ca06 Mon Sep 17 00:00:00 2001 From: heckerpowered <72550834+heckerpowered@users.noreply.github.com> Date: Mon, 22 Jul 2024 15:45:21 +0800 Subject: [PATCH 2/2] [class.virtual] remove redundant virtual specifier --- src/Mamba/Code Analysis/Syntax/AssignmentExpressionSyntax.h | 4 ++-- src/Mamba/Code Analysis/Syntax/BinaryExpressionSyntax.h | 4 ++-- src/Mamba/Code Analysis/Syntax/BlockStatementSyntax.h | 4 ++-- src/Mamba/Code Analysis/Syntax/BreakStatementSyntax.h | 4 ++-- src/Mamba/Code Analysis/Syntax/CallExpressionSyntax.h | 4 ++-- src/Mamba/Code Analysis/Syntax/CompilationUnitSyntax.h | 4 ++-- src/Mamba/Code Analysis/Syntax/ContinueStatementSyntax.h | 4 ++-- src/Mamba/Code Analysis/Syntax/DoWhileStatementSyntax.h | 4 ++-- src/Mamba/Code Analysis/Syntax/ElseClauseSyntax.h | 4 ++-- src/Mamba/Code Analysis/Syntax/ExpressionStatementSyntax.h | 4 ++-- src/Mamba/Code Analysis/Syntax/ForStatementSyntax.h | 4 ++-- src/Mamba/Code Analysis/Syntax/FunctionDeclarationSyntax.h | 4 ++-- src/Mamba/Code Analysis/Syntax/GlobalStatementSyntax.h | 4 ++-- src/Mamba/Code Analysis/Syntax/IfStatementSyntax.h | 4 ++-- src/Mamba/Code Analysis/Syntax/LiteralExpressionSyntax.h | 4 ++-- src/Mamba/Code Analysis/Syntax/NameExpressionSyntax.h | 4 ++-- src/Mamba/Code Analysis/Syntax/ParameterSyntax.h | 4 ++-- .../Code Analysis/Syntax/ParenthesizedExpressionSyntax.h | 4 ++-- src/Mamba/Code Analysis/Syntax/ReturnStatementSyntax.h | 4 ++-- src/Mamba/Code Analysis/Syntax/TypeClauseSyntax.h | 4 ++-- src/Mamba/Code Analysis/Syntax/UnaryExpressionSyntax.h | 4 ++-- src/Mamba/Code Analysis/Syntax/VariableDeclarationSyntax.h | 4 ++-- src/Mamba/Code Analysis/Syntax/WhileStatementSyntax.h | 4 ++-- 23 files changed, 46 insertions(+), 46 deletions(-) diff --git a/src/Mamba/Code Analysis/Syntax/AssignmentExpressionSyntax.h b/src/Mamba/Code Analysis/Syntax/AssignmentExpressionSyntax.h index c1f3748..7b52186 100644 --- a/src/Mamba/Code Analysis/Syntax/AssignmentExpressionSyntax.h +++ b/src/Mamba/Code Analysis/Syntax/AssignmentExpressionSyntax.h @@ -18,8 +18,8 @@ namespace Mamba const std::shared_ptr AssignmentToken, const std::shared_ptr Expression) noexcept; - virtual std::vector> Children() const noexcept override; - virtual SyntaxKind Kind() const noexcept override; + std::vector> Children() const noexcept override; + SyntaxKind Kind() const noexcept override; const std::shared_ptr IdentifierToken; const std::shared_ptr AssignmentToken; diff --git a/src/Mamba/Code Analysis/Syntax/BinaryExpressionSyntax.h b/src/Mamba/Code Analysis/Syntax/BinaryExpressionSyntax.h index b59070e..95e4a5e 100644 --- a/src/Mamba/Code Analysis/Syntax/BinaryExpressionSyntax.h +++ b/src/Mamba/Code Analysis/Syntax/BinaryExpressionSyntax.h @@ -17,8 +17,8 @@ namespace Mamba const std::shared_ptr OperatorToken, const std::shared_ptr Right) noexcept; - virtual SyntaxKind Kind() const noexcept override; - virtual std::vector> Children() const noexcept override; + SyntaxKind Kind() const noexcept override; + std::vector> Children() const noexcept override; std::shared_ptr Left; std::shared_ptr OperatorToken; diff --git a/src/Mamba/Code Analysis/Syntax/BlockStatementSyntax.h b/src/Mamba/Code Analysis/Syntax/BlockStatementSyntax.h index e6c3539..b5f000e 100644 --- a/src/Mamba/Code Analysis/Syntax/BlockStatementSyntax.h +++ b/src/Mamba/Code Analysis/Syntax/BlockStatementSyntax.h @@ -23,8 +23,8 @@ namespace Mamba std::vector>&& Statements, const std::shared_ptr CloseBraceToken) noexcept; - virtual SyntaxKind Kind() const noexcept override; - virtual std::vector> Children() const noexcept override; + SyntaxKind Kind() const noexcept override; + std::vector> Children() const noexcept override; const std::shared_ptr OpenBraceToken; const std::vector> Statements; diff --git a/src/Mamba/Code Analysis/Syntax/BreakStatementSyntax.h b/src/Mamba/Code Analysis/Syntax/BreakStatementSyntax.h index f97346e..335edb5 100644 --- a/src/Mamba/Code Analysis/Syntax/BreakStatementSyntax.h +++ b/src/Mamba/Code Analysis/Syntax/BreakStatementSyntax.h @@ -13,8 +13,8 @@ namespace Mamba [[nodiscard]] BreakStatementSyntax(const std::shared_ptr SyntaxTree, const std::shared_ptr Keyword) noexcept; - virtual SyntaxKind Kind() const noexcept override; - virtual std::vector> Children() const noexcept override; + SyntaxKind Kind() const noexcept override; + std::vector> Children() const noexcept override; const std::shared_ptr Keyword; }; diff --git a/src/Mamba/Code Analysis/Syntax/CallExpressionSyntax.h b/src/Mamba/Code Analysis/Syntax/CallExpressionSyntax.h index 216b563..729032c 100644 --- a/src/Mamba/Code Analysis/Syntax/CallExpressionSyntax.h +++ b/src/Mamba/Code Analysis/Syntax/CallExpressionSyntax.h @@ -20,8 +20,8 @@ namespace Mamba const std::shared_ptr>> Arguments, const std::shared_ptr CloseParenthesisToken) noexcept; - virtual SyntaxKind Kind() const noexcept override; - virtual std::vector> Children() const noexcept override; + SyntaxKind Kind() const noexcept override; + std::vector> Children() const noexcept override; const std::shared_ptr Identifier; const std::shared_ptr OpenParenthesisToken; diff --git a/src/Mamba/Code Analysis/Syntax/CompilationUnitSyntax.h b/src/Mamba/Code Analysis/Syntax/CompilationUnitSyntax.h index c5f2b6e..a33ce58 100644 --- a/src/Mamba/Code Analysis/Syntax/CompilationUnitSyntax.h +++ b/src/Mamba/Code Analysis/Syntax/CompilationUnitSyntax.h @@ -20,8 +20,8 @@ namespace Mamba std::vector>&& Members, std::shared_ptr EndOfFileToken) noexcept; - virtual SyntaxKind Kind() const noexcept override; - virtual std::vector> Children() const noexcept override; + SyntaxKind Kind() const noexcept override; + std::vector> Children() const noexcept override; const std::vector> Members; std::shared_ptr EndOfFileToken; diff --git a/src/Mamba/Code Analysis/Syntax/ContinueStatementSyntax.h b/src/Mamba/Code Analysis/Syntax/ContinueStatementSyntax.h index 5856a02..62fdd87 100644 --- a/src/Mamba/Code Analysis/Syntax/ContinueStatementSyntax.h +++ b/src/Mamba/Code Analysis/Syntax/ContinueStatementSyntax.h @@ -14,8 +14,8 @@ namespace Mamba [[nodiscard]] ContinueStatementSyntax(const std::shared_ptr SyntaxTree, const std::shared_ptr Keyword) noexcept; - virtual SyntaxKind Kind() const noexcept override; - virtual std::vector> Children() const noexcept override; + SyntaxKind Kind() const noexcept override; + std::vector> Children() const noexcept override; const std::shared_ptr Keyword; }; diff --git a/src/Mamba/Code Analysis/Syntax/DoWhileStatementSyntax.h b/src/Mamba/Code Analysis/Syntax/DoWhileStatementSyntax.h index f391064..faefc41 100644 --- a/src/Mamba/Code Analysis/Syntax/DoWhileStatementSyntax.h +++ b/src/Mamba/Code Analysis/Syntax/DoWhileStatementSyntax.h @@ -19,8 +19,8 @@ namespace Mamba const std::shared_ptr WhileKeyword, const std::shared_ptr Condition) noexcept; - virtual SyntaxKind Kind() const noexcept override; - virtual std::vector> Children() const noexcept override; + SyntaxKind Kind() const noexcept override; + std::vector> Children() const noexcept override; const std::shared_ptr DoKeyword; const std::shared_ptr Body; diff --git a/src/Mamba/Code Analysis/Syntax/ElseClauseSyntax.h b/src/Mamba/Code Analysis/Syntax/ElseClauseSyntax.h index 495ad9c..6b2ce08 100644 --- a/src/Mamba/Code Analysis/Syntax/ElseClauseSyntax.h +++ b/src/Mamba/Code Analysis/Syntax/ElseClauseSyntax.h @@ -16,8 +16,8 @@ namespace Mamba const std::shared_ptr ElseKeyword, const std::shared_ptr ElseStatement) noexcept; - virtual SyntaxKind Kind() const noexcept override; - virtual std::vector> Children() const noexcept override; + SyntaxKind Kind() const noexcept override; + std::vector> Children() const noexcept override; const std::shared_ptr ElseKeyword; const std::shared_ptr ElseStatement; diff --git a/src/Mamba/Code Analysis/Syntax/ExpressionStatementSyntax.h b/src/Mamba/Code Analysis/Syntax/ExpressionStatementSyntax.h index 054a352..ce80445 100644 --- a/src/Mamba/Code Analysis/Syntax/ExpressionStatementSyntax.h +++ b/src/Mamba/Code Analysis/Syntax/ExpressionStatementSyntax.h @@ -16,8 +16,8 @@ namespace Mamba const std::shared_ptr SyntaxTree, const std::shared_ptr Expression) noexcept; - virtual SyntaxKind Kind() const noexcept override; - virtual std::vector> Children() const noexcept override; + SyntaxKind Kind() const noexcept override; + std::vector> Children() const noexcept override; const std::shared_ptr Expression; }; diff --git a/src/Mamba/Code Analysis/Syntax/ForStatementSyntax.h b/src/Mamba/Code Analysis/Syntax/ForStatementSyntax.h index 1ee0cb2..4ab8371 100644 --- a/src/Mamba/Code Analysis/Syntax/ForStatementSyntax.h +++ b/src/Mamba/Code Analysis/Syntax/ForStatementSyntax.h @@ -25,8 +25,8 @@ namespace Mamba const std::shared_ptr CloseParenthesisToken, const std::shared_ptr Body) noexcept; - virtual SyntaxKind Kind() const noexcept override; - virtual std::vector> Children() const noexcept override; + SyntaxKind Kind() const noexcept override; + std::vector> Children() const noexcept override; const std::shared_ptr Keyword; const std::shared_ptr OpenParenthesisToken; diff --git a/src/Mamba/Code Analysis/Syntax/FunctionDeclarationSyntax.h b/src/Mamba/Code Analysis/Syntax/FunctionDeclarationSyntax.h index eab5c38..234c8fa 100644 --- a/src/Mamba/Code Analysis/Syntax/FunctionDeclarationSyntax.h +++ b/src/Mamba/Code Analysis/Syntax/FunctionDeclarationSyntax.h @@ -23,8 +23,8 @@ namespace Mamba const NullableSharedPtr Type, const std::shared_ptr Body) noexcept; - virtual SyntaxKind Kind() const noexcept override; - virtual std::vector> Children() const noexcept override; + SyntaxKind Kind() const noexcept override; + std::vector> Children() const noexcept override; const std::shared_ptr FunctionKeyword; const std::shared_ptr Identifier; diff --git a/src/Mamba/Code Analysis/Syntax/GlobalStatementSyntax.h b/src/Mamba/Code Analysis/Syntax/GlobalStatementSyntax.h index 7cd1e8f..ef21eac 100644 --- a/src/Mamba/Code Analysis/Syntax/GlobalStatementSyntax.h +++ b/src/Mamba/Code Analysis/Syntax/GlobalStatementSyntax.h @@ -14,8 +14,8 @@ namespace Mamba [[nodiscard]] GlobalStatementSyntax(const std::shared_ptr SyntaxTree, const std::shared_ptr Statement) noexcept; - virtual SyntaxKind Kind() const noexcept override; - virtual std::vector> Children() const noexcept override; + SyntaxKind Kind() const noexcept override; + std::vector> Children() const noexcept override; const std::shared_ptr Statement; }; diff --git a/src/Mamba/Code Analysis/Syntax/IfStatementSyntax.h b/src/Mamba/Code Analysis/Syntax/IfStatementSyntax.h index bf7910c..bef92d9 100644 --- a/src/Mamba/Code Analysis/Syntax/IfStatementSyntax.h +++ b/src/Mamba/Code Analysis/Syntax/IfStatementSyntax.h @@ -19,8 +19,8 @@ namespace Mamba const std::shared_ptr ThenStatement, const NullableSharedPtr ElseClause) noexcept; - virtual SyntaxKind Kind() const noexcept override; - virtual std::vector> Children() const noexcept override; + SyntaxKind Kind() const noexcept override; + std::vector> Children() const noexcept override; const std::shared_ptr IfKeyword; const NullableSharedPtr OpenParenthesisToken; diff --git a/src/Mamba/Code Analysis/Syntax/LiteralExpressionSyntax.h b/src/Mamba/Code Analysis/Syntax/LiteralExpressionSyntax.h index 78a958b..f62c951 100644 --- a/src/Mamba/Code Analysis/Syntax/LiteralExpressionSyntax.h +++ b/src/Mamba/Code Analysis/Syntax/LiteralExpressionSyntax.h @@ -22,8 +22,8 @@ namespace Mamba // https://zh.cppreference.com/w/cpp/language/elaborated_type_specifier const std::shared_ptr Value) noexcept; - virtual SyntaxKind Kind() const noexcept override; - virtual std::vector> Children() const noexcept override; + SyntaxKind Kind() const noexcept override; + std::vector> Children() const noexcept override; const std::shared_ptr LiteralToken; const std::shared_ptr Value; diff --git a/src/Mamba/Code Analysis/Syntax/NameExpressionSyntax.h b/src/Mamba/Code Analysis/Syntax/NameExpressionSyntax.h index 62c9fa0..00e5416 100644 --- a/src/Mamba/Code Analysis/Syntax/NameExpressionSyntax.h +++ b/src/Mamba/Code Analysis/Syntax/NameExpressionSyntax.h @@ -15,8 +15,8 @@ namespace Mamba [[nodiscard]] NameExpressionSyntax(const std::shared_ptr SyntaxTree, const std::shared_ptr IdentifierToken) noexcept; - virtual SyntaxKind Kind() const noexcept override; - virtual std::vector> Children() const noexcept override; + SyntaxKind Kind() const noexcept override; + std::vector> Children() const noexcept override; const std::shared_ptr IdentifierToken; }; diff --git a/src/Mamba/Code Analysis/Syntax/ParameterSyntax.h b/src/Mamba/Code Analysis/Syntax/ParameterSyntax.h index 9db1ea2..b4f708f 100644 --- a/src/Mamba/Code Analysis/Syntax/ParameterSyntax.h +++ b/src/Mamba/Code Analysis/Syntax/ParameterSyntax.h @@ -16,8 +16,8 @@ namespace Mamba const std::shared_ptr Identifier, const std::shared_ptr Type) noexcept; - virtual SyntaxKind Kind() const noexcept override; - virtual std::vector> Children() const noexcept override; + SyntaxKind Kind() const noexcept override; + std::vector> Children() const noexcept override; const std::shared_ptr Identifier; const std::shared_ptr Type; diff --git a/src/Mamba/Code Analysis/Syntax/ParenthesizedExpressionSyntax.h b/src/Mamba/Code Analysis/Syntax/ParenthesizedExpressionSyntax.h index fc5e8f6..06a944e 100644 --- a/src/Mamba/Code Analysis/Syntax/ParenthesizedExpressionSyntax.h +++ b/src/Mamba/Code Analysis/Syntax/ParenthesizedExpressionSyntax.h @@ -18,8 +18,8 @@ namespace Mamba const std::shared_ptr Expression, const std::shared_ptr CloseParenthesisToken) noexcept; - virtual SyntaxKind Kind() const noexcept override; - virtual std::vector> Children() const noexcept override; + SyntaxKind Kind() const noexcept override; + std::vector> Children() const noexcept override; const std::shared_ptr OpenParenthesisToken; const std::shared_ptr Expression; diff --git a/src/Mamba/Code Analysis/Syntax/ReturnStatementSyntax.h b/src/Mamba/Code Analysis/Syntax/ReturnStatementSyntax.h index f167bc5..3aa70b0 100644 --- a/src/Mamba/Code Analysis/Syntax/ReturnStatementSyntax.h +++ b/src/Mamba/Code Analysis/Syntax/ReturnStatementSyntax.h @@ -15,8 +15,8 @@ namespace Mamba const std::shared_ptr ReturnKeyword, const NullableSharedPtr Expression) noexcept; - virtual SyntaxKind Kind() const noexcept override; - virtual std::vector> Children() const noexcept override; + SyntaxKind Kind() const noexcept override; + std::vector> Children() const noexcept override; const std::shared_ptr ReturnKeyword; const NullableSharedPtr Expression; diff --git a/src/Mamba/Code Analysis/Syntax/TypeClauseSyntax.h b/src/Mamba/Code Analysis/Syntax/TypeClauseSyntax.h index 78007c8..64d2a6a 100644 --- a/src/Mamba/Code Analysis/Syntax/TypeClauseSyntax.h +++ b/src/Mamba/Code Analysis/Syntax/TypeClauseSyntax.h @@ -15,8 +15,8 @@ namespace Mamba const std::shared_ptr ColonToken, const std::shared_ptr Identifier) noexcept; - virtual SyntaxKind Kind() const noexcept override; - virtual std::vector> Children() const noexcept override; + SyntaxKind Kind() const noexcept override; + std::vector> Children() const noexcept override; const std::shared_ptr ColonToken; const std::shared_ptr Identifier; diff --git a/src/Mamba/Code Analysis/Syntax/UnaryExpressionSyntax.h b/src/Mamba/Code Analysis/Syntax/UnaryExpressionSyntax.h index 2e8525d..058cfe1 100644 --- a/src/Mamba/Code Analysis/Syntax/UnaryExpressionSyntax.h +++ b/src/Mamba/Code Analysis/Syntax/UnaryExpressionSyntax.h @@ -16,8 +16,8 @@ namespace Mamba const std::shared_ptr OperatorToken, const std::shared_ptr Operand) noexcept; - virtual SyntaxKind Kind() const noexcept override; - virtual std::vector> Children() const noexcept override; + SyntaxKind Kind() const noexcept override; + std::vector> Children() const noexcept override; const std::shared_ptr OperatorToken; const std::shared_ptr Operand; diff --git a/src/Mamba/Code Analysis/Syntax/VariableDeclarationSyntax.h b/src/Mamba/Code Analysis/Syntax/VariableDeclarationSyntax.h index 681a4c4..c49715a 100644 --- a/src/Mamba/Code Analysis/Syntax/VariableDeclarationSyntax.h +++ b/src/Mamba/Code Analysis/Syntax/VariableDeclarationSyntax.h @@ -19,8 +19,8 @@ namespace Mamba const std::shared_ptr EqualsToken, const std::shared_ptr Initializer) noexcept; - virtual SyntaxKind Kind() const noexcept override; - virtual std::vector> Children() const noexcept override; + SyntaxKind Kind() const noexcept override; + std::vector> Children() const noexcept override; const std::shared_ptr Keyword; const std::shared_ptr Identifier; diff --git a/src/Mamba/Code Analysis/Syntax/WhileStatementSyntax.h b/src/Mamba/Code Analysis/Syntax/WhileStatementSyntax.h index 25b685a..3ee0bbc 100644 --- a/src/Mamba/Code Analysis/Syntax/WhileStatementSyntax.h +++ b/src/Mamba/Code Analysis/Syntax/WhileStatementSyntax.h @@ -16,8 +16,8 @@ namespace Mamba const std::shared_ptr Condition, const std::shared_ptr Body) noexcept; - virtual SyntaxKind Kind() const noexcept override; - virtual std::vector> Children() const noexcept override; + SyntaxKind Kind() const noexcept override; + std::vector> Children() const noexcept override; const std::shared_ptr WhileKeyword; const std::shared_ptr Condition;