/* * Copyright (c) 2023, Dan Klishch * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include namespace JSSpecCompiler { // AST/AST.h class NodeSubtreePointer; class VariableDeclaration; using VariableDeclarationRef = NonnullRefPtr; class NamedVariableDeclaration; using NamedVariableDeclarationRef = NonnullRefPtr; class SSAVariableDeclaration; using SSAVariableDeclarationRef = RefPtr; class Node; using NullableTree = RefPtr; using Tree = NonnullRefPtr; class Statement; class Expression; class ErrorNode; class ControlFlowOperator; class ControlFlowFunctionReturn; class ControlFlowJump; class ControlFlowBranch; class MathematicalConstant; class StringLiteral; class BinaryOperation; class UnaryOperation; class IsOneOfOperation; class UnresolvedReference; class ReturnNode; class AssertExpression; class IfBranch; class ElseIfBranch; class IfElseIfChain; class TreeList; class RecordDirectListInitialization; class FunctionCall; class SlotName; class Variable; using VariableRef = NonnullRefPtr; class FunctionPointer; using FunctionPointerRef = NonnullRefPtr; // Compiler/ControlFlowGraph.h class BasicBlock; using BasicBlockRef = BasicBlock*; class ControlFlowGraph; // Compiler/GenericASTPass.h class RecursiveASTVisitor; // Parser/SpecParser.h class SpecificationParsingContext; class AlgorithmStep; class AlgorithmStepList; class Algorithm; class SpecFunction; class SpecificationClause; class Specification; // DiagnosticEngine.h struct LogicalLocation; struct Location; class DiagnosticEngine; // Function.h class TranslationUnit; using TranslationUnitRef = TranslationUnit*; class FunctionDeclaration; using FunctionDeclarationRef = FunctionDeclaration*; class FunctionDefinition; using FunctionDefinitionRef = FunctionDefinition*; }