Example #1
0
        public override bool CheckType(ref QLException error)
        {
            if (Referenced && !Identifiers.IsDefined(Identifier))
            {
                error.Message   = string.Format("Referenced identifier '{0}' is not defined!", Identifier);
                error.TokenInfo = TokenInfo;
                return(false);
            }

            if (Referenced)
            {
                if (GetValue() == null)
                {
                    error.Message   = string.Format("Referenced identifier '{0}' has no value!", Identifier);
                    error.TokenInfo = TokenInfo;
                    return(false);
                }
            }

            if (InnerType.GetType() != InnerValue.GetResultType())
            {
                error.Message   = string.Format("Identifier '{0}' expected a value of type '{1}', got '{2}'", Identifier, InnerType.GetType(), InnerValue.GetType());
                error.TokenInfo = TokenInfo;
                return(false);
            }

            if (InnerValue != null)
            {
                return(InnerValue.CheckType(ref error));
            }

            return(true);
        }
        public override bool CheckType(ref QLException error)
        {
            if (Referenced && !Identifiers.IsDefined(Identifier))
            {
                error.Message = string.Format("Referenced identifier '{0}' is not defined!", Identifier);
                error.TokenInfo = TokenInfo;
                return false;
            }

            if (Referenced)
            {
                if (GetValue() == null)
                {
                    error.Message = string.Format("Referenced identifier '{0}' has no value!", Identifier);
                    error.TokenInfo = TokenInfo;
                    return false;
                }
            }

            if (InnerType.GetType() != InnerValue.GetResultType())
            {
                error.Message = string.Format("Identifier '{0}' expected a value of type '{1}', got '{2}'", Identifier, InnerType.GetType(), InnerValue.GetType());
                error.TokenInfo = TokenInfo;
                return false;
            }

            if(InnerValue != null)
                return InnerValue.CheckType(ref error);

            return true;
        }
Example #3
0
        public void DeclareSelf()
        {
            if (!Referenced)
            {
                if (Identifiers.IsDefined(Identifier))
                {
                    QLException error = new QLException();

                    error.Message   = string.Format("Identifier '{0}' already defined!", Identifier);
                    error.TokenInfo = TokenInfo;

                    QLTypeChecker.QLError(error);
                    AlreadyDefined = true;
                }
                else
                {
                    Identifiers.AddIdentifier(Identifier, this);
                }
            }
        }
        public void DeclareSelf()
        {
            if (!Referenced)
            {
                if (Identifiers.IsDefined(Identifier))
                {
                    QLException error = new QLException();

                    error.Message = string.Format("Identifier '{0}' already defined!", Identifier);
                    error.TokenInfo = TokenInfo;

                    QLTypeChecker.QLError(error);
                    AlreadyDefined = true;
                }
                else
                {
                    Identifiers.AddIdentifier(Identifier, this);
                }
            }
        }