UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
UnknownType.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2// uLang Compiler Public API
3
4#pragma once
5
10
11#define UE_API VERSECOMPILER_API
12
13namespace uLang
14{
15
20{
21public:
22 static constexpr ETypeKind StaticTypeKind = ETypeKind::Unknown;
23
26
28
29 virtual CUTF8String AsCodeRecursive(ETypeSyntaxPrecedence /*OuterPrecedence*/, TArray<const CFlowType*>& /*VisitedFlowTypes*/, bool bLinkable, ETypeStringFlag Flag) const override { return "$unknown"; }
30
31 virtual bool IsPersistable() const override { return true; }
32
33 virtual bool IsExplicitlyCastable() const override { return true; }
34
35 virtual bool IsExplicitlyConcrete() const override { return true; }
36
37 virtual bool CanBeCustomAccessorDataType() const override { return false; }
38
40 const CSymbol& _Name;
41};
42
47{
48public:
49 UE_API CExprError(TUPtr<CUnknownType>&& ExprType = nullptr, bool bCanFail = false);
50
51 virtual EAstNodeType GetNodeType() const override { return EAstNodeType::Error_; }
52 virtual CUTF8String GetErrorDesc() const override { return "error"; }
53 UE_API virtual const CTypeBase* GetResultType(const CSemanticProgram& Program) const override;
54 virtual bool CanFail(const CAstPackage* Package) const override { return _bCanFail; }
55
56 // We hold onto child expressions in service of semantic analysis -- we may want info
57 // for nested expressions, which may be well-formed, even if this parent was not fully formed.
58 void AppendChild(TSPtr<CAstNode>&& Child) { _UnknownChildren.Add(Move(Child)); }
59
60 virtual void VisitChildren(SAstVisitor& Visitor) const override { Visitor.VisitArray("UnknownChildren", _UnknownChildren); }
61
62 virtual bool operator==(const CExpressionBase& Other) const override { return false; } // Never equal
63
64private:
65 TUPtr<CUnknownType> _ExprType;
66 TSPtrArray<CAstNode> _UnknownChildren;
67 bool _bCanFail;
68};
69
74{
75public:
76 UE_API CExprPlaceholder(TUPtr<CUnknownType>&& ExprType = nullptr);
77
78 virtual EAstNodeType GetNodeType() const override { return EAstNodeType::Placeholder_; }
79 virtual CUTF8String GetErrorDesc() const override { return "placeholder"; }
80 UE_API virtual const CTypeBase* GetResultType(const CSemanticProgram& Program) const override;
81
82 virtual bool operator==(const CExpressionBase& Other) const override { return false; } // Never equal
83
84private:
85 TUPtr<CUnknownType> _ExprType;
86};
87
88} // namespace uLang
89
90#undef UE_API
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define UE_API
Definition SColorGradingComponentViewer.h:12
Definition Expression.h:3494
Definition UnknownType.h:47
virtual void VisitChildren(SAstVisitor &Visitor) const override
Definition UnknownType.h:60
virtual bool CanFail(const CAstPackage *Package) const override
Definition UnknownType.h:54
virtual bool operator==(const CExpressionBase &Other) const override
Definition UnknownType.h:62
virtual CUTF8String GetErrorDesc() const override
Definition UnknownType.h:52
virtual EAstNodeType GetNodeType() const override
Definition UnknownType.h:51
void AppendChild(TSPtr< CAstNode > &&Child)
Definition UnknownType.h:58
virtual UE_API const CTypeBase * GetResultType(const CSemanticProgram &Program) const override
Definition UnknownType.cpp:19
Definition UnknownType.h:74
virtual UE_API const CTypeBase * GetResultType(const CSemanticProgram &Program) const override
Definition UnknownType.cpp:33
virtual EAstNodeType GetNodeType() const override
Definition UnknownType.h:78
virtual bool operator==(const CExpressionBase &Other) const override
Definition UnknownType.h:82
virtual CUTF8String GetErrorDesc() const override
Definition UnknownType.h:79
Definition Expression.h:387
A normal type: a head normal form of types where the head is not a parametric type instantiation.
Definition SemanticTypes.h:217
Definition SemanticScope.h:73
Definition SemanticProgram.h:277
Symbol representing a text string with an associated id.
Definition Symbol.h:98
Base class for all types.
Definition SemanticTypes.h:138
CSemanticProgram & GetProgram() const
Definition SemanticTypes.h:143
Definition UnknownType.h:20
virtual bool IsPersistable() const override
Definition UnknownType.h:31
static constexpr ETypeKind StaticTypeKind
Definition UnknownType.h:22
virtual bool IsExplicitlyCastable() const override
Definition UnknownType.h:33
virtual CUTF8String AsCodeRecursive(ETypeSyntaxPrecedence, TArray< const CFlowType * > &, bool bLinkable, ETypeStringFlag Flag) const override
Definition UnknownType.h:29
virtual bool IsExplicitlyConcrete() const override
Definition UnknownType.h:35
const CSymbol & _Name
The name of the unknown type.
Definition UnknownType.h:40
CUnknownType(const CSymbol &Name, CScope &EnclosingScope)
Definition UnknownType.h:27
virtual bool CanBeCustomAccessorDataType() const override
Definition UnknownType.h:37
TArray< const CTypeBase * > _SuggestedTypes
Valid replacements for this type (if any)
Definition UnknownType.h:25
Definition Array.h:51
Definition SharedPointerArray.h:21
Definition SharedPointer.h:77
Definition UniquePointer.h:15
Definition VVMEngineEnvironment.h:23
ETypeSyntaxPrecedence
Definition SemanticTypes.h:100
ETypeKind
Definition SemanticTypes.h:92
ETypeStringFlag
Definition SemanticTypes.h:121
EAstNodeType
Definition Expression.h:183
ULANG_FORCEINLINE TRemoveReference< T >::Type && Move(T &&Obj)
Definition References.h:86
Definition VstNode.h:940
Definition Expression.h:224