30 lines
991 B
C#
30 lines
991 B
C#
using Upsilon.BaseTypes;
|
|
using Upsilon.BoundTypes;
|
|
|
|
namespace Upsilon.Binder.VariableSymbols
|
|
{
|
|
public class UserDataVariableSymbol : VariableSymbol
|
|
{
|
|
public BoundTypeDefinition BoundTypeDefinition { get; }
|
|
public UserDataBoundTypeDefinition Parent { get; }
|
|
|
|
public UserDataVariableSymbol(string name, TypeContainer typeContainer, bool isLocal) : base(name, typeContainer, isLocal)
|
|
{
|
|
_typeContainer = typeContainer;
|
|
}
|
|
|
|
public UserDataVariableSymbol(string name, BoundTypeDefinition type, bool isLocal, UserDataBoundTypeDefinition parent = null)
|
|
: base(name, type.ScriptType, isLocal)
|
|
{
|
|
BoundTypeDefinition = type;
|
|
Parent = parent;
|
|
}
|
|
|
|
private TypeContainer _typeContainer;
|
|
public override TypeContainer TypeContainer
|
|
{
|
|
get => BoundTypeDefinition?.ScriptType ?? _typeContainer;
|
|
set => _typeContainer = value;
|
|
}
|
|
}
|
|
} |