Пример #1
0
        /// <summary>
        /// Processes operation contract statement node.
        /// </summary>
        /// <param name="node">The node.</param>
        private void Process_OperationContractStatement(dynamic node)
        {
            if (node.GetBrand() == "Ensures")
            {
                Ensures ensures = new Ensures();

                // Map source location and node to object
                ensures.AddMetaInfo(new SourceLocationInfo(node, context));
                context.AddObject(node, ensures);

                // OperationContract
                ensures.OperationContract = (OperationContract)NameContext.Current.Scope;

                // Text
                ensures.Text = node.Text;

                // Rule
                ensures.Rule = this.Process(node.Rule);
                ensures.Rule.ExpectedType = BuiltInType.Bool;
            }
            if (node.GetBrand() == "Requires")
            {
                Requires requires = new Requires();

                // Map source location and node to object
                requires.AddMetaInfo(new SourceLocationInfo(node, context));
                context.AddObject(node, requires);

                // OperationContract
                requires.OperationContract = (OperationContract)NameContext.Current.Scope;

                // Text
                requires.Text = node.Text;

                // Rule
                requires.Rule = this.Process(node.Rule);
                requires.Rule.ExpectedType = BuiltInType.Bool;

                // Otherwise
                requires.Otherwise = this.Process(node.Otherwise);
                requires.Otherwise.ExpectedType = PseudoType.Object;
            }
        }