summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG13
-rw-r--r--configure.ac2
-rw-r--r--src/settings.sml2
-rw-r--r--src/urweb.grm20
-rw-r--r--tests/qualrecord.ur7
5 files changed, 34 insertions, 10 deletions
diff --git a/CHANGELOG b/CHANGELOG
index f5c92708..20d79590 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,4 +1,17 @@
========
+20161022
+========
+
+- Add Json module to standard library
+- Make HTML5 the default and add 'xhtml' .urp directive
+- Remove 'Value' attributes for AJAX-y UI widgets, because they should use 'Source' instead
+- Change compiler to support reproducible builds, via replacement of timestamp
+ calculation with different methods or use of content hashes
+- IPv6 support in HTTP-server binaries, via '-A' command-line option
+- New Top function: mapUX_rev
+- Bug fixes and documentation improvements
+
+========
20160805
========
diff --git a/configure.ac b/configure.ac
index a35f13b1..8ee3e795 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,4 +1,4 @@
-AC_INIT([urweb], [20160805])
+AC_INIT([urweb], [20161022])
WORKING_VERSION=1
AC_USE_SYSTEM_EXTENSIONS
diff --git a/src/settings.sml b/src/settings.sml
index 5662d9d6..70ea1861 100644
--- a/src/settings.sml
+++ b/src/settings.sml
@@ -290,7 +290,7 @@ val jsFuncsBase = basisM [("alert", "alert"),
("attrifyInt", "ts"),
("attrifyFloat", "ts"),
("attrifyBool", "bs"),
- ("boolToString", "ts"),
+ ("boolToString", "bs"),
("str1", "id"),
("strsub", "sub"),
("strsuffix", "suf"),
diff --git a/src/urweb.grm b/src/urweb.grm
index 40101056..c1ee74f2 100644
--- a/src/urweb.grm
+++ b/src/urweb.grm
@@ -475,6 +475,7 @@ fun patternOut (e : exp) =
| eterm of exp
| etuple of exp list
| rexp of (con * exp) list * bool
+ | rpath of con
| xml of exp
| xmlOne of exp
| xmlOpt of exp
@@ -1151,15 +1152,15 @@ ctuple : capps STAR capps ([capps1, capps2])
| capps STAR ctuple (capps :: ctuple)
rcon : ([])
- | ident EQ cexp ([(ident, cexp)])
- | ident EQ cexp COMMA rcon ((ident, cexp) :: rcon)
+ | rpath EQ cexp ([(rpath, cexp)])
+ | rpath EQ cexp COMMA rcon ((rpath, cexp) :: rcon)
-rconn : ident ([(ident, (CUnit, s (identleft, identright)))])
- | ident COMMA rconn ((ident, (CUnit, s (identleft, identright))) :: rconn)
+rconn : rpath ([(rpath, (CUnit, s (rpathleft, rpathright)))])
+ | rpath COMMA rconn ((rpath, (CUnit, s (rpathleft, rpathright))) :: rconn)
rcone : ([])
- | ident COLON cexp ([(ident, cexp)])
- | ident COLON cexp COMMA rcone ((ident, cexp) :: rcone)
+ | rpath COLON cexp ([(rpath, cexp)])
+ | rpath COLON cexp COMMA rcone ((rpath, cexp) :: rcone)
ident : CSYMBOL (CName CSYMBOL, s (CSYMBOLleft, CSYMBOLright))
| INT (CName (Int64.toString INT), s (INTleft, INTright))
@@ -1567,8 +1568,11 @@ ptuple : pat COMMA pat ([pat1, pat2])
| pat COMMA ptuple (pat :: ptuple)
rexp : DOTDOTDOT ([], true)
- | ident EQ eexp ([(ident, eexp)], false)
- | ident EQ eexp COMMA rexp ((ident, eexp) :: #1 rexp, #2 rexp)
+ | rpath EQ eexp ([(rpath, eexp)], false)
+ | rpath EQ eexp COMMA rexp ((rpath, eexp) :: #1 rexp, #2 rexp)
+
+rpath : path (CVar path, s (pathleft, pathright))
+ | CSYMBOL (CName CSYMBOL, s (CSYMBOLleft, CSYMBOLright))
xml : xmlOne xml (let
val pos = s (xmlOneleft, xmlright)
diff --git a/tests/qualrecord.ur b/tests/qualrecord.ur
new file mode 100644
index 00000000..4db64e5f
--- /dev/null
+++ b/tests/qualrecord.ur
@@ -0,0 +1,7 @@
+structure M = struct
+ con the_best_name = #Wiggles
+ con the_runner_up = #Beppo
+end
+
+val x : {M.the_best_name : int, A : int, M.the_runner_up : int} =
+ {M.the_best_name = 8, A = 9, M.the_runner_up = 10}