forked from antlr/stringtemplate4
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGES.txt
462 lines (340 loc) · 16.8 KB
/
CHANGES.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
ST 4.0.8-Dev Release
Terence Parr, parrt at cs usfca edu
ANTLR project lead and supreme dictator for life
University of San Francisco
CHANGES
January 30, 2013
* Require EOF in Group.g (rule group)
* Minor cleanup and documentation tweaks
* Improve ObjectModelAdaptor caching performance, eliminate chance of deadlock
January 4, 2013 -- Release 4.0.7
* Fixed README for release
January 1, 2013
* Tweaked escapes in <<...>>. Do NOT replace if it's <\\>.
Escapes: >\> means >> inside of <<...>>.
Escapes: \>> means >> inside of <<...>> unless at end like <<...\>>>>.
In that case, use <%..>>%> instead.
* Added warning about: "Missing newline after newline escape <\\>"
* Actually: %\> is the escape to avoid end of string
* Several STViz updates:
* Highlight template subexpressions and literal text responsible for output
* Gray out hidden (inherited+aliased) attributes
* Highlight user-instanced templates in bold
December 31, 2012
* Reversing decision to use >\> and %\> as the escapes now for >> and %>.
Simply allowing >>> is the best, such as <<Hi <name>>>.
It will strip off the >> and leave > as the appropriate end of expression.
Added testTripleAngleOnEnds. Even <<<x>>> works now. There is no escape
for %>.
December 26, 2012
* Allow [] as a dictionary value, resolves antlr/stringtemplate4#33
December 25, 2012
* Fix issues with bytecode to source mapping
* Fix several STViz bugs
* Improved error location reporting
* Fix several unit tests
* Explicit InstanceScope tracking in the interpreter
December 15, 2012
* throw exceptionWhen the attribute name is no to be consistent with the
other check for '.' in the name.
December 13, 2012
* Allow [] as a default value for formal arguments (fixes antlr/stringtemplate4#20)
* Add method STViz.waitForClose()
* Specify -Dtest.interactive to have STViz tests leave the window open for the user
* Code cleanup
December 11, 2012
* Don't cache the STNoSuchPropertyException and STNoSuchAttributeException
instances.
* Add ErrorType.NO_SUCH_ATTRIBUTE_PASS_THROUGH, reported on <foo(...)> where foo
contains a parameter with no default value and no matching attribute exists in
the surrounding scope.
* Improved message when reporting ErrorType.NO_SUCH_PROPERTY.
December 10, 2012
* DateRenderer and StringRenderer now use the provided locale (fixes
antlr/stringtemplate4#11)
* Fixes for handling of arrays (fixes antlr/stringtemplate4#12 and other
unreported issues)
* Try to load template file (.st) if group file (.stg) failed with IOException
(fixes antlr/stringtemplate4#14)
* Add STGroup.GROUP_FILE_EXTENSION and STGroup.TEMPLATE_FILE_EXTENSION
* Updated documentation, code cleanup
December 9, 2012
* >\> and %\> are the escapes now for >> and %> Fixes antlr/stringtemplate4#17
December 3, 2012 -- Release 4.0.7-rc-1
December 1, 2012
* Missing ANT target for STParser.g in build
September 26, 2012 -- Release 4.0.6
* STRawGroupDir problem and ST("template") issue. When there are no formal
args for template t and you map t across some values, t implicitly gets
arg "it". E.g., "$names:bold()$" and bold as "<b>$it$</b>".
August 13, 2012
* Fixed https://github.com/antlr/stringtemplate4/issues/5
May 21, 2012
* Made fields in the error messages public
February 8, 2012 -- 4.0.5 release
December 25, 2011
* STLexer.tokens missing from src build
* Added STRawGroupDir that expects pure templates in .st files not template defs
with headers. So use $name$ not
foo(name) ::= "$name"
December 4, 2011
* synchronized object model adaptor
* import illegal in group files embedded in STGroupDirs
July 19, 2011 (Udo)
* Fixed Misc.newline issue in test code (Udo)
July 18, 2011 -- Release 4.0.4
* Added delimiters "<", ">" notation to group file.
July 5, 2011
* added "get import list" method.
* added methods to allow deep vs shallow setting of renderers; interp always
asks native group defining template for the renderer.
* STGroup.getInstanceOf was not auto-adding "/" to front if none was present
June 30, 2011
* Updated javadoc on getAttributeRenderer()
* Updated javadoc on unload/importTemplates in STGroup() (ub)
* Added test case for unload of groups specified in group file imports. (ub)
June 24, 2011
* STGroup.unload() now removes imports that were specified in the group
file, but only calls unload() on templates that were explicitly added
in the program. Resolves both Sam's and Udo's concerns. :)
June 22, 2011
* subtemplates {...} in subdirectories didn't work.
June 21, 2011 -- Release 4.0.3
* {} wasn't allowed as a template
June 16, 2011
* Major overhaul of template names:
** '/' allowed as starting ID letter like </a/b()>
** getInstanceOf names must be fully qualified. If you don't put / on
front, one is added for you.
** template refs in expr are relative to location of surrounding template
unless prefixed with /. In that case they are relative to root of group.
** import statement no longer allows fully qualified file name.
** Changed all unit tests to use fully qualified names and see results that way.
June 15, 2011
* STGroup.unload() calls unload() on each group in the imports list
instead of clearing the list. (Thanks to Sam...wait, did Udo already
try this?)
June 14, 2011
* STRuntimeMessage got NPE upon ST.impl == null
* ctor ST() is protected; not for users. bad users!
June 11, 2011 (Udo)
* Removed warning (access static member through instance)
June 4, 2011 (Udo)
* Fixed and added tests
May 29, 2011 (Udo)
* Fixed test case for <\n> to handle different line.separator sizes
May 28, 2011 (Udo)
* BUG: On Windows wrapped lines are separated with \r\r\n
* made tests run on Windows and non-US locales
May 20, 2011 (Udo)
* STGroupDir.load(String name) no longer checks for (parent) group file when name specifies no parent (no '/')
May 18, 2011 (Udo)
* unload in STGroup now also unloads the import relationships
* Fixed test testRendererWithPredefinedFormat2 to also work in non-PDT timezones
* Fixed tests testArg1, testArg2 in TestGroupSyntaxErrors
* Fixed "URI is not hierarchical" issue when STGroupFile is imported from jar file
May 17, 2011 (Udo)
* Added getTemplateNames to STGroup
May 14, 2011
* passthru() didn't watch for empty formal args
May 10-15, 2011 (Udo)
* fixed bug raising a NullPointerException when a formalArg's default value has a syntax error.
Example: main(a={(<"")>}) ::= ""
* STGroupFile.getName() returns group name also for imported groups (was null before).
4.0.2 -- May 3, 2011
* Backing out change from 4/17; don't want Serializable implementation.
* Improved error msg for out of order required parameters (after optional ones)
April 26, 2011
* rest() stripped nulls, which it shouldn't. Was inconsistent with trunc(), etc...
April 21, 2011
* Made STGroup.iterateAcrossValues an instance variable not static.
That needed a change to convertAnythingIteratableToIterator, etc..
to non-static.
* Removed STDump as unneeded; Use STViz.
April 17, 2011
* Added implements Serializable to ST, STGroup.
April 16, 2011
* Made compatible with Java 1.5; removed Arrays.copyOf() ref.
* Updated ANT build to ref ant lib dir not /usr/local/lib/
April 11, 2011
* Dictionaries weren't inherited. Added unit test.
4.0.1 -- April 10, 2011
* Added STNoSuchAttributeException to distinguish from no such property.
* Pass through didn't handle case properly of empty or nonexistent attributes.
We only pass through nonempty values. Further, it makes no sense to set
values for parameter x if x has no definition above. That is the same as
having no value. This is required to get default attributes to work
with passthru in all cases. Added unit tests.
* Oops. That is not quite correct. If no value exists or the attribute
itself does not exist, we must set the parameter to null ifthere is no
default parameter. otherwise the interpreter will complain about a
missing argument value.
* Was missing alreadyLoaded = true; in STGroupString.
* Bug fix for <@super.r()> exprs; it tried to doubly-define region.
Code generator didn't generate mangled name either; fixed and then updated
http://www.antlr.org/wiki/display/ST4/Template+to+Bytecode+mapping
* Improved error msg when referencing implicit attributes like 'i'.
April 9, 2011
* Sam pointed out that regions didn't work with <% %>
* Cleaned up STViz.
* STViz expands template attribute view when you click in output
* STViz template and attribute tree views now grouped.
* default arguments were not evaluated in context of invoked template;
couldn't see other args.
* Added '...' pass through arg back in. Only allowed with named arg lists
or as sole arg. Not allowed in <(name)()> indirect includes.
Inserts new passthru bytecode to set any unset args.
* AST pane not updated upon new ST selection
* Scroll output pane when ST selected
* Added STGroup.iterateAcrossValues static boolean for v3 compatibility
v3 iterates across values not keys like v4. But to convert ANTLR templates,
it's too hard to find without static typing in templates.
* Cleaned up ST.locals[] creation; centralized in Interpreter.
* MapModelAdaptor made copy of STs unnecessarily and w/o copying locals[]
April 8, 2011
* Added scope tree showing all inherited attributes (dynamic scoping) in lower
left "attributes" pane.
* Undid some bugs I introduced concerning selecting templates. Tried to
move the cursor in output window which triggered multiple / wrong update
events.
April 6, 2011
* Ignore indentation in <% .. %> templates but keep white space between elements
* Added better error msg for internal errors during template evaluation.
context [outputFile parser genericParser rule ruleBlockSingleAlt alt element
ruleRefAndListLabel ruleRef] 1:1 internal error caused by: java.lang.NullPointerException
at org.stringtemplate.v4.ST.rawSetAttribute(ST.java:294)
at org.stringtemplate.v4.Interpreter.storeArgs(Interpreter.java:576)
at org.stringtemplate.v4.Interpreter.super_new(Interpreter.java:495)
...
April 4, 2011
* in TestSubtemplates.java there was an extra (bad) import
* fixed a couple of unit tests that failed.
* removed .class files from depot
* added t() ::= <% ... %> template that ignores all newlines inside template.
This allows arbitrary formatting within a template that does not result
in new lines in the output. This is useful when you have a really complicated
template with IFs and such that needs to generate output all on the same line.
Currently, this can be quite challenging. There's no way to read a huge
template on one line.
April 3, 2011
* ST.getAttribute() only looks in that template now. Can't look up
since it doesn't know what interp is executing. It's just to get
an attr out of a template now. Moved dynamically scope getAttribute()
to Interpreter.
* STRuntimeMessage takes an Interpreter interp arg now.
* ST dropped some weight. No need for enclosingInstance ptr now. That is
properly done in interpreter as a stack of scopes. Now, there is no
side-effect whatsoever in ST instances for execution. THREAD SAFE eval now.
* Added <<<...>>> template that ignores all \n inside; use <\n> to get one.
* Interpreter interp added to ModelAdaptor. BREAKING CHANGE IF YOU'VE BUILT
a model adaptor (rare)
* Internal clean up so stack of template evaluation scopes has debug info.
Required changes across lots of files. Started referring to scopes
so entire path to root is available and with debugging info if debug on
for that interpreter. Extracted InstanceScope from inner class.
March 30 - April 2, 2011
* ST.inspect() now returns an STViz, which has all the goodies and gives
you access to the GUI stuff.
* added aggr.{prop1, prop2} for ST.add(). Too useful. (Was in v3).
Use ST.addAggr("aggr.{p1,p2}", a1, a2);
* refactored to fold DebugST into ST; adds one object ptr to every ST
instance but worth reduction in complexity. "new ST(...)" calls didn't
work (not DebugST objects) in inspector. ST.inspect() for any ST now.
* Fixed bug in STViz. Didn't highlight entire output when you click
topmost template.
* STGroup.debug no longer there nor static. It's an instance var of
Interpreter. ST.inspect() tells interp to debug. STGroup.trackCreationEvents
says to record where in code an ST was created and where code added attributes.
* Gutted tree model for STViz, refactored debugging/event tracking code.
* creation events had wrong location (launch of interp location); only tracks
now for externally/injected created templates.
March 29, 2011
* Fixed bug where escaped quotes in template defs were not unescaped for use
by compiler.
4.0 -- March 27, 2011
* ST.add() returns self now so we can chain. t.add("x", 1).add("y", "hi");
* import from files in jar didn't work.
* removed field tokens from STGroupString
* improved imports lookup
* made fields of events public final.
* augmented debug event toString and fixed start/stop issue with eval
events. renamed fields to be more clear.
* Added IndentEvent for dbg
* ^(INDENT expr-sub-tree) is now ^(INDENTED_EXPR INDENT expr-sub-tree)
with changes to grammars. More consistent with subtree root being operator.
STViz now highlights indentation properly in template pane.
* Altered CodeGenerator.g to pass AST node for indentation not just string.
This way we get INDENT operations into the sourceMap for indent debug events.
4.0b5 -- March 6, 2011
BIG THANKS to Sam Harwell and, again, to Udo Borkowski for debugging help and
suggestions. Sam is doing the C# implementation. Benjamin Niemann is doing
the Python port. Alan Condit is doing Objective-C.
* true/false were only allowed as default args; now allowed as template
arg expressions in templates. Works as dictionary value too.
* couldn't have anonymous templates inside a region.
* parentheses were a bit weird in conditions. Now, conditions cannot
use parentheses to mean "early evaluation" except as obj.(propName)
* nativeGroup of all implicit templates was STGroup.defaultGroup.
* removed all writes of the enclosingInstance at evaluation time; fixed
issue for STViz.
* comments on line by themselves don't emit \n to output
* STViz tried to highlight AST pane even when we switched ASTs
* combined load_str, write into write_str single op. minor optimizations too.
Seems a tiny bit faster per benchmarks.
* Added ST.VERSION auto-updated by ANT.
* added STGroupString
* Added support for this in group.g:
oldStyleHeader // ignore but lets us use this parser in AW for both v3 and v4
: 'group' ID ( ':' ID )?
( 'implements' ID (',' ID)* )?
';'
;
* IndexOutOfBounds Exception when using "cap" format on empty string
* @t.() ::= "" caused NPE
* Region redefinition caused NPE. "<@r>a<@end><@r()>"
* STViz couldn't see first subtemplate when computing template range in output.
* Was incorrectly computing filename to load template .st files from group dir.
* Listener was not notified upon "no such template" in group dir.
* Redid how ST found imported files, dir, etc.. Can now import a template
file even. Can be absolute path or relative path. If relative, it
looks in dir of .stg file with import then CLASSPATH.
* The listener of import groups is now set to that of group that imports
them.
* Regions behave like <if> tags now. Indent respected if <@r>...<@end> on
indented single line. Indent/newlines ignored after those tags if
on separate lines.
4.0b4 -- February 5, 2011
BIG THANKS to Udo Borkowski for his help debugging these betas and his
suggestions.
* added write to file methods
* had infinite loop for expr: "<t()$"
* the default file encoding is now UTF-8
* early eval <(x)> using new STWriter derived from type of current STWriter.
e.g., AutoIndentWriter.
* didn't detect nonterminated comment. <!bad comment>
* added two literals "true" and "false" to the template argument syntax; e.g.,
stat(name,x=true,y=false) ::= "..."
* it was treating "..." default arg as a template not string.
* throws STException now upon not finding group file or group dir instead
of sending err to listener.
* default args couldn't have subtemplates
t(x,y={<x:{s|<s>}>}) ::= "..."
* Added a new benchmark from Oliver Zeigermann.
4.0b3 -- January 28, 2011
* exception in lexer blew out of parsing
* missing '}' in {...} caused infinite loop
* NPE in storeArgs if empty arg list
* removed debugging prints.
* x={<(...)>} default arg was hardcoded to <...> not $..$ or whatever.
* The grammar needed to match and ignore an optional INDENT before region @end
* when redefining a region (template) the newline before the >> was kept.
* WS not ignored in front of STRING token in expressions.
* closing STViz doesn't exit vm now.
* throws exception if registering renderer or model adaptor for primitive
4.0b2 -- January 22, 2011
* Order of static init issue; an error mgr was null.
* Fixed some unit testing the Windows friendly
* Fix bug in triple if-elseif-elseif-elseif; added unit tests
* bug where I did not say current_ip when calling exec() from writeObject
* Updated README to include install information
4.0b1 -- January 14, 2011