コード例 #1
0
        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);
        }
コード例 #3
0
 public Declaration(NamedDeclaration namedDeclaration)
 {
     this.NamedDeclaration = namedDeclaration;
 }