private void BeginExpression(Precedence innerPrecedence, CheckingMode innerMode)
            {
                Precedence   outerPrecedence = modeStack.Peek().First;
                CheckingMode outerMode       = modeStack.Peek().Second;

                if (innerMode == CheckingMode.Inherit)
                {
                    innerMode = outerMode;
                }

                bool?modeSwitch = DetermineCheckingModeSwitch(outerMode, innerMode);

                if (modeSwitch == true)
                {
                    result.Append("checked(");
                }
                else if (modeSwitch == false)
                {
                    result.Append("unchecked(");
                }
                else if (AreParenthesesNeeded(outerPrecedence, innerPrecedence))
                {
                    result.Append('(');
                }

                modeStack.Push(new Pair <Precedence, CheckingMode>(innerPrecedence, innerMode));
            }
Exemple #2
0
        public CodeScopeNode(IdContainer Parent, CodeString Code)
            : base(Parent, Code)
        {
            var CodeScopeParent = GetParent <CodeScopeNode>(FunctionScope);

            if (CodeScopeParent != null)
            {
                CheckingMode = CodeScopeParent.CheckingMode;
            }
        }
 private static bool?DetermineCheckingModeSwitch(CheckingMode outerMode, CheckingMode innerMode)
 {
     if (innerMode == CheckingMode.Checked && (outerMode == CheckingMode.Unchecked || outerMode == CheckingMode.Reset))
     {
         return(true);
     }
     if (innerMode == CheckingMode.Unchecked && outerMode == CheckingMode.Checked)
     {
         return(false);
     }
     return(null);
 }
Exemple #4
0
        public override void SetBaseMChessOptionsForTestExecution(AppTasks.RunMChessBasedTestTask runTestTask, MChessOptions opts)
        {
            base.SetBaseMChessOptionsForTestExecution(runTestTask, opts);

            opts.CheckObservations = true;
            opts.ObservationMode   = CheckingMode.ToChessObservationMode();

            string fileIdentity = ResolveFileIdentity();
            string contextName  = runTestTask.TestContext.Name;
            string obsFileName  = ObservationGeneratorEntity.ComposeObservationFilename(OwningTestMethod, fileIdentity, contextName, runTestTask.TestArgs);

            opts.ObservationFile = obsFileName;
        }
            private void EndExpression()
            {
                Precedence   innerPrecedence = modeStack.Peek().First;
                CheckingMode innerMode       = modeStack.Pop().Second;
                Precedence   outerPrecedence = modeStack.Peek().First;
                CheckingMode outerMode       = modeStack.Peek().Second;

                bool?modeSwitch = DetermineCheckingModeSwitch(outerMode, innerMode);

                if (modeSwitch.HasValue || AreParenthesesNeeded(outerPrecedence, innerPrecedence))
                {
                    result.Append(')');
                }
            }
            private Unit VisitPrefixOperator(UnaryExpression expr, string token, Precedence precedence, CheckingMode checkingMode)
            {
                BeginExpression(precedence, checkingMode);

                result.Append(token).Append(' ');
                Visit(expr.Operand);

                EndExpression();
                return(Unit.Value);
            }