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