Clean
This commit is contained in:
@@ -1,4 +1,58 @@
|
||||
namespace NubLang.TypeChecking.Node;
|
||||
namespace NubLang.TypeChecking;
|
||||
|
||||
public abstract record Node;
|
||||
|
||||
#region Definitions
|
||||
|
||||
public abstract record DefinitionNode(string Module, string Name) : Node;
|
||||
|
||||
public record FuncParameterNode(string Name, NubType Type) : Node;
|
||||
|
||||
public record FuncSignatureNode(List<FuncParameterNode> Parameters, NubType ReturnType) : Node;
|
||||
|
||||
public record FuncNode(string Module, string Name, string? ExternSymbol, FuncSignatureNode Signature, BlockNode? Body) : DefinitionNode(Module, Name);
|
||||
|
||||
public record StructFieldNode(string Name, NubType Type, ExpressionNode? Value) : Node;
|
||||
|
||||
public record StructFuncNode(string Name, string? Hook, FuncSignatureNode Signature, BlockNode Body) : Node;
|
||||
|
||||
public record StructNode(string Module, string Name, List<StructFieldNode> Fields, List<StructFuncNode> Functions) : DefinitionNode(Module, Name);
|
||||
|
||||
public record GlobalVariableNode(string Module, string Name, ExpressionNode Value) : DefinitionNode(Module, Name);
|
||||
|
||||
#endregion
|
||||
|
||||
#region Statements
|
||||
|
||||
public abstract record StatementNode : Node;
|
||||
|
||||
public abstract record TerminalStatementNode : StatementNode;
|
||||
|
||||
public record BlockNode(List<StatementNode> Statements) : StatementNode;
|
||||
|
||||
public record StatementFuncCallNode(FuncCallNode FuncCall) : StatementNode;
|
||||
|
||||
public record StatementStructFuncCallNode(StructFuncCallNode StructFuncCall) : StatementNode;
|
||||
|
||||
public record ReturnNode(ExpressionNode? Value) : TerminalStatementNode;
|
||||
|
||||
public record AssignmentNode(LValueExpressionNode Target, ExpressionNode Value) : StatementNode;
|
||||
|
||||
public record IfNode(ExpressionNode Condition, BlockNode Body, Variant<IfNode, BlockNode>? Else) : StatementNode;
|
||||
|
||||
public record VariableDeclarationNode(string Name, ExpressionNode? Assignment, NubType Type) : StatementNode;
|
||||
|
||||
public record ContinueNode : TerminalStatementNode;
|
||||
|
||||
public record BreakNode : TerminalStatementNode;
|
||||
|
||||
public record WhileNode(ExpressionNode Condition, BlockNode Body) : StatementNode;
|
||||
|
||||
public record DeferNode(StatementNode Statement) : StatementNode;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Expressions
|
||||
|
||||
public enum UnaryOperator
|
||||
{
|
||||
@@ -80,4 +134,6 @@ public record ConvertFloatNode(NubType Type, ExpressionNode Value, NubFloatType
|
||||
|
||||
public record SizeBuiltinNode(NubType Type, NubType TargetType) : RValueExpressionNode(Type);
|
||||
|
||||
public record FloatToIntBuiltinNode(NubType Type, ExpressionNode Value, NubFloatType ValueType, NubIntType TargetType) : RValueExpressionNode(Type);
|
||||
public record FloatToIntBuiltinNode(NubType Type, ExpressionNode Value, NubFloatType ValueType, NubIntType TargetType) : RValueExpressionNode(Type);
|
||||
|
||||
#endregion
|
||||
@@ -1,17 +0,0 @@
|
||||
namespace NubLang.TypeChecking.Node;
|
||||
|
||||
public abstract record DefinitionNode(string Module, string Name) : Node;
|
||||
|
||||
public record FuncParameterNode(string Name, NubType Type) : Node;
|
||||
|
||||
public record FuncSignatureNode(List<FuncParameterNode> Parameters, NubType ReturnType) : Node;
|
||||
|
||||
public record FuncNode(string Module, string Name, string? ExternSymbol, FuncSignatureNode Signature, BlockNode? Body) : DefinitionNode(Module, Name);
|
||||
|
||||
public record StructFieldNode(string Name, NubType Type, ExpressionNode? Value) : Node;
|
||||
|
||||
public record StructFuncNode(string Name, string? Hook, FuncSignatureNode Signature, BlockNode Body) : Node;
|
||||
|
||||
public record StructNode(string Module, string Name, List<StructFieldNode> Fields, List<StructFuncNode> Functions) : DefinitionNode(Module, Name);
|
||||
|
||||
public record GlobalVariableNode(string Module, string Name, ExpressionNode Value) : DefinitionNode(Module, Name);
|
||||
@@ -1,3 +0,0 @@
|
||||
namespace NubLang.TypeChecking.Node;
|
||||
|
||||
public abstract record Node;
|
||||
@@ -1,27 +0,0 @@
|
||||
namespace NubLang.TypeChecking.Node;
|
||||
|
||||
public abstract record StatementNode : Node;
|
||||
|
||||
public abstract record TerminalStatementNode : StatementNode;
|
||||
|
||||
public record BlockNode(List<StatementNode> Statements) : StatementNode;
|
||||
|
||||
public record StatementFuncCallNode(FuncCallNode FuncCall) : StatementNode;
|
||||
|
||||
public record StatementStructFuncCallNode(StructFuncCallNode StructFuncCall) : StatementNode;
|
||||
|
||||
public record ReturnNode(ExpressionNode? Value) : TerminalStatementNode;
|
||||
|
||||
public record AssignmentNode(LValueExpressionNode Target, ExpressionNode Value) : StatementNode;
|
||||
|
||||
public record IfNode(ExpressionNode Condition, BlockNode Body, Variant<IfNode, BlockNode>? Else) : StatementNode;
|
||||
|
||||
public record VariableDeclarationNode(string Name, ExpressionNode? Assignment, NubType Type) : StatementNode;
|
||||
|
||||
public record ContinueNode : TerminalStatementNode;
|
||||
|
||||
public record BreakNode : TerminalStatementNode;
|
||||
|
||||
public record WhileNode(ExpressionNode Condition, BlockNode Body) : StatementNode;
|
||||
|
||||
public record DeferNode(StatementNode Statement) : StatementNode;
|
||||
@@ -1,7 +1,7 @@
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
|
||||
namespace NubLang.TypeChecking.Node;
|
||||
namespace NubLang.TypeChecking;
|
||||
|
||||
public abstract class NubType : IEquatable<NubType>
|
||||
{
|
||||
@@ -1,8 +1,7 @@
|
||||
using System.Diagnostics;
|
||||
using NubLang.Diagnostics;
|
||||
using NubLang.Modules;
|
||||
using NubLang.Parsing.Syntax;
|
||||
using NubLang.TypeChecking.Node;
|
||||
using NubLang.Parsing;
|
||||
|
||||
namespace NubLang.TypeChecking;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user