/// <summary> /// Extracts the method contracts. Does not visit property accessors. /// </summary> public override void Visit(IMethodDefinition methodDefinition) { Contract.Assert(methodDefinition != null); if (CCDocContractHelper.IsCompilerGenerated(this.host, methodDefinition)) { return; //Don't continue traverser } if (MethodHelper.IsGetter(methodDefinition) || MethodHelper.IsSetter(methodDefinition)) { return; } string methodId = MemberHelper.GetMemberSignature(methodDefinition, NameFormattingOptions.DocumentationId); docTracker.WriteLine(methodId); bool isPure = IsPure(methodDefinition);//TODO: Remove, this should be handled on the packager side. ContractPackager packager = new ContractPackager(host, docTracker); packager.PackageMethodContracts(methodDefinition, isPure); XContract[] contractArray; if (packager.TryGetContracts(out contractArray)) { docTracker.AddMemberInfo(contractArray.Length, MemberKind.Method); contracts.Add(new KeyValuePair <string, XContract[]>(methodId, contractArray)); } else { docTracker.AddMemberInfo(0, MemberKind.Method); } //base.TraverseChildren(methodDefinition); }
public override void TraverseChildren(ITypeDefinition typeDefinition) { if (CCDocContractHelper.IsCompilerGenerated(this.host, typeDefinition) || IsContractClass(typeDefinition)) { return; //Don't continue traverser } base.TraverseChildren(typeDefinition); }