コード例 #1
0
ファイル: Emitter.cs プロジェクト: almeswe/alm
        private static void EmitUnaryBooleanExpression(UnaryBooleanExpression unaryBoolean, ILGenerator methodIL)
        {
            switch (unaryBoolean.OperatorKind)
            {
            case UnaryExpression.UnaryOperator.UnaryInversion:
                EmitExpression(unaryBoolean.Operand, methodIL);
                EmitInversion(methodIL);
                break;

            default:
                throw new Exception();
            }
        }
コード例 #2
0
ファイル: TypeResolver.cs プロジェクト: almeswe/alm
        public static InnerType ResolveUnaryBooleanExpressionType(UnaryBooleanExpression unaryBooleanExpression)
        {
            InnerType OperandType = ResolveExpressionType(unaryBooleanExpression.Operand);

            //try to cast
            switch (unaryBooleanExpression.OperatorKind)
            {
            case UnaryArithExpression.UnaryOperator.UnaryInversion:
                if (OperandType is Boolean)
                {
                    return(OperandType);
                }
                ReportErrorInBooleanExpression(new SemanticErrorMessage($"Operator of logical inversion must be located before logical operand", unaryBooleanExpression.SourceContext));
                return(OperandType);

            default:
                return(new Undefined());
            }
        }
コード例 #3
0
ファイル: TypeResolver.cs プロジェクト: almeswe/alm
 public static void TryToCastUnaryBooleanExpression(UnaryBooleanExpression unaryBoolean)
 {
     TryToCastExpression(unaryBoolean.Operand, new Undefined());
 }