using Jint.Native;
using Jint.Runtime.Environments;
namespace Jint.Runtime.References
{
///
/// Represents the Reference Specification Type
/// http://www.ecma-international.org/ecma-262/5.1/#sec-8.7
///
public class Reference
{
private readonly JsValue _baseValue;
private readonly string _name;
private readonly bool _strict;
public Reference(JsValue baseValue, string name, bool strict)
{
_baseValue = baseValue;
_name = name;
_strict = strict;
}
public JsValue GetBase()
{
return _baseValue;
}
public string GetReferencedName()
{
return _name;
}
public bool IsStrict()
{
return _strict;
}
public bool HasPrimitiveBase()
{
return _baseValue.IsPrimitive();
}
public bool IsUnresolvableReference()
{
return _baseValue.IsUndefined();
}
public bool IsPropertyReference()
{
// http://www.ecma-international.org/ecma-262/5.1/#sec-8.7
return (_baseValue.IsObject() && !_baseValue.Is()) || HasPrimitiveBase();
}
}
}