Exemple #1
0
        private NewtypeNode ToNewtypeNode(NewtypeDecl nt)
        {
            Console.WriteLine("Newtype: " + nt.Name);
            var dc    = new DocComment(nt.DocComment);
            var token = ToTokenNode(nt.tok);

            return(new NewtypeNode {
                Name = nt.Name,
                BaseType = ToTypeRefNode(nt.BaseType, token),
                Constraint = Printer.ExprToString(nt.Constraint),
                UserDoc = dc.MainBody,
                Token = ToTokenNode(nt.tok),
            });
        }
Exemple #2
0
        void NewtypeDecl(ModuleDefinition module, out TopLevelDecl td)
        {
            IToken id, bvId;
            Attributes attrs = null;
            td = null;
            Type baseType = null;
            Expression wh;

            Expect(79);
            while (la.kind == 46) {
            Attribute(ref attrs);
            }
            NoUSIdent(out id);
            Expect(67);
            if (IsIdentColonOrBar()) {
            NoUSIdent(out bvId);
            if (la.kind == 21) {
                Get();
                Type(out baseType);
            }
            if (baseType == null) { baseType = new OperationTypeProxy(true, true, false, false, false, false); }
            Expect(23);
            Expression(out wh, false, true);
            td = new NewtypeDecl(theVerifyThisFile ? id : new IncludeToken(id), id.val, module, new BoundVar(bvId, bvId.val, baseType), wh, attrs);
            } else if (StartOf(3)) {
            Type(out baseType);
            td = new NewtypeDecl(theVerifyThisFile ? id : new IncludeToken(id), id.val, module, baseType, attrs);
            } else SynErr(145);
        }
Exemple #3
0
        void NewtypeDecl(DeclModifierData dmod, ModuleDefinition module, out TopLevelDecl td)
        {
            IToken id, bvId;
            Attributes attrs = null;
            td = null;
            Type baseType = null;
            Expression wh;
            CheckDeclModifiers(dmod, "Newtypes", AllowedDeclModifiers.None);

            Expect(84);
            while (la.kind == 50) {
            Attribute(ref attrs);
            }
            NoUSIdent(out id);
            Expect(74);
            if (IsIdentColonOrBar()) {
            NoUSIdent(out bvId);
            if (la.kind == 22) {
                Get();
                Type(out baseType);
            }
            if (baseType == null) { baseType = new InferredTypeProxy(); }
            Expect(24);
            Expression(out wh, false, true);
            td = new NewtypeDecl(theVerifyThisFile ? id : new IncludeToken(id), id.val, module, new BoundVar(bvId, bvId.val, baseType), wh, attrs);
            } else if (StartOf(6)) {
            Type(out baseType);
            td = new NewtypeDecl(theVerifyThisFile ? id : new IncludeToken(id), id.val, module, baseType, attrs);
            } else SynErr(159);
        }