public void AddType(NamedDeclaration td) { Contract.Requires(td != null); Contract.Requires((td is TypeCtorDecl) || (td is TypeSynonymDecl)); Contract.Requires(td.Name != null); string name = td.Name; if (CheckBvNameClashes(td, name)) { return; // error has already been reported } if (!types.ContainsKey(name)) { types.Add(name, td); } else { var previous = types[name]; var r = SelectNonExtern(td, previous); if (r == null) { Error(td, "more than one declaration of type name: {0}", name); } else { types[name] = r; } } }
private static Declaration AnalyzeDeclaration(NamedDeclaration declaration) { var result = new Declaration(declaration); foreach (var r in GatherNonParameterTypeReferences(declaration)) { result.NamedTypeReferences.Add(r); } foreach (var r in GetInheritanceReferences(declaration)) { result.InheritedTypes.Add(r); } return(result); }
public Declaration(NamedDeclaration namedDeclaration) { this.NamedDeclaration = namedDeclaration; }