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; }
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); } } }