Jeff Cross
ba07f39347
refactor(router): convert to typescript
...
Fixes #2001
2015-06-02 11:06:44 -07:00
Marc Laval
4c8e11a577
fix(ShadowCss): keyframes tests failing in Safari
...
Closes #2283
2015-06-02 19:23:06 +02:00
Victor Berchet
c60091b949
refactor(Compiler): improve the error message on component load error
...
by adding the fetched url.
relates to #1460
2015-06-02 12:59:50 +02:00
Victor Berchet
8811337622
refactor(ElementInjector): add interfaces for strategies
2015-06-02 10:09:39 +02:00
Victor Berchet
921fb9f2ce
refactor(Injector): use TS iodioms
2015-06-02 09:53:11 +02:00
Victor Berchet
e93b5a1d5b
refactor(Injector): add an interface for strategies
2015-06-02 09:53:11 +02:00
gdi2290
db7a1f19ba
feat(render/dom_renderer): DocumentToken use OpaqueToken
...
BREAKING CHANGE:
No longer a `const` string. Now a const OpaqueToken
2015-06-01 16:24:36 -07:00
gdi2290
ef27919f7f
feat(core/compiler): AppViewPool use OpaqueToken
...
BREAKING CHANGE:
No longer a `const` string. Now a const OpaqueToken
2015-06-01 16:24:36 -07:00
gdi2290
c571b2693e
feat(OpaqueToken): now a const constructor
...
BREAKING CHANGE:
now a `const` constructor
2015-06-01 16:24:36 -07:00
PatrickJS
93f464a145
feat(change_detection.ts): export PipeFactory
...
Closes #2245
2015-06-01 16:14:02 -07:00
Tobias Bosch
62a95823e0
fix(selector): support multiple `:not` clauses
...
Fixes #2243
2015-06-01 14:24:19 -07:00
Tim Blasi
22f5925202
fix(facade): Make PromiseWrapper#all semantics equivalent
...
The semantics between ES6 `Promise#all` and Dart's `Future#wait` are
different for values that are not `Promise`/`Future`s. In ES6,
non-`Promise` values are immediately completed to their current value.
In Dart, non-`Future` values cause an error.
Updated Dart's `PromiseWrapper#all` implementation to conform to the ES6
spec.
2015-06-01 07:26:46 -07:00
vsavkin
a9d6fd9afa
feat(forms): implemented template-driven forms
2015-05-30 11:56:00 -07:00
vsavkin
5c53cf6486
fix(fake_async): fixed fakeAsync to throw instead of crashing on cjs
2015-05-30 11:55:17 -07:00
vsavkin
74882c6c38
feat(test): added not.toBeNull
2015-05-30 11:54:10 -07:00
uber5001
6404dd8293
refactor (angular2/src/dom): tsifying angular2/src/dom
...
translates parse5_adapter.cjs to typescript
Closes #2230
2015-05-29 17:01:05 -07:00
vsavkin
f19970a481
feat(transformers): added support for lifecycle events
2015-05-29 16:40:34 -07:00
vsavkin
d523613329
test(di): added a test verifying hierarchical injection
2015-05-29 15:52:46 -07:00
Tim Blasi
000a8e25a2
fix(dart/transform): Fix DirectiveMetadata read tests
2015-05-29 14:56:42 -07:00
Tim Blasi
8a3b0b366f
feat(dart/transform): Generate ChangeDetector classes
...
Use the `ProtoViewDto` created by the render `Compiler` to create a
`ChangeDetectorDefinition`.
From there, generate a subclass of `AbstractChangeDetector` for each
`ChangeDetectorDefinition`.
Run some basic unit tests for the dynamic and JIT change detectors on
pre-generated change detectors.
2015-05-29 14:48:53 -07:00
Jeff Cross
e323c07ab9
refactor(benchpress): convert src and test to typescript
...
Fixes #2007
2015-05-29 14:02:58 -07:00
Tobias Bosch
f9908cd436
feat(test): add element probe
...
Usage: bootstrap the app with the special binding
`ELEMENT_PROBE_CONFIG` from `angular2/debug`.
This will provide a global method `ngProbe(element)` that
will expose a `DebugElement` with directive instances, ... on it.
During tests that use Angular's test injector, the probe is
enabled by default. The `DebugElement ` can be retrieved via the
function `inspectDomElement` of `angular2/debug`. Note
that the `TestComponentBuilder` already returns `DebugElement `s.
Closes #1992
2015-05-29 12:44:21 -07:00
Tobias Bosch
24bc4b66d0
fix(render): don’t store a document fragment as bound element
...
When a template contains bound text nodes as root nodes,
we used to store the document fragment that we got from
cloning `template.content`. However, this fragment will be
empty as soon as the view gets attached. Now we store
`null` instead of the document fragment in this case.
Also groups the 3 cases in `_createView` so they are easier to
understand.
2015-05-29 11:33:23 -07:00
Tobias Bosch
2351896cc0
fix(dom): allow to correctly clone document fragments
2015-05-29 11:33:23 -07:00
Tobias Bosch
307011a96c
fix(dom): `querySelectorAll` should only query child nodes
2015-05-29 11:33:22 -07:00
Tobias Bosch
6f3368ef16
feat(dom): add `setData()` method.
2015-05-29 11:33:22 -07:00
Tobias Bosch
cdf791f0c5
feat(facade): add read/write access to global variables
2015-05-29 11:33:22 -07:00
Tobias Bosch
75578f41e7
feat(view): add `AppViewListener` interface
...
Basic functionality how element probe is hooked into
the system.
2015-05-29 11:33:22 -07:00
Tim Blasi
ffb219fb91
style(dart): Format Dart source with dart_style 0.1.8
2015-05-29 10:42:47 -07:00
Sekib Omazic
eb2784eb81
refactor(core.js): export NgZone
...
Export NgZone so it can be used in applications where large data streams should be processed outside of Angular.
2015-05-29 17:58:32 +02:00
gdi2290
28ee0612cb
feat(router.js): export router injectables
...
Exporting: `RootRouter`, `RouteRegistry`, `BrowserLocation`,
`Location`, and `Pipeline`.
2015-05-29 17:56:00 +02:00
elimach
a80921b45d
fix(binding): unbalanced curly brackets in documentation
2015-05-29 17:54:51 +02:00
Victor Berchet
0db88f34b8
refactor(annotations): stricter types
2015-05-29 11:44:45 +02:00
Victor Berchet
35f0ee510a
refactor(transformer): updates in properties syntax
2015-05-29 11:44:44 +02:00
Victor Berchet
d7df853bde
feat(Directive): convert properties to an array
...
fixes #2013
BREAKING CHANGE:
Before
@Directive(properties: {
'sameName': 'sameName',
'directiveProp': 'elProp | pipe'
})
After
@Directive(properties: [
'sameName',
'directiveProp: elProp | pipe'
])
2015-05-29 11:44:43 +02:00
Victor Berchet
0387221da8
fix(ast): fix the size of a list in _evalListCache
2015-05-29 08:07:43 +02:00
vsavkin
c39c8ebcd0
feat(change_detection): added onInit and onCheck hooks
2015-05-28 16:46:22 -07:00
Tim Blasi
5d2af54730
feat(dart/transform): Improve constant evaluation
...
Use `package:analyzer`'s `ConstantEvaluator` to read from the AST.
This cleanly builds values for us from adjacent strings, interpolations,
etc.
2015-05-28 15:18:22 -07:00
Victor Berchet
a9be2ebf1b
feat: add support for the safe navigation (aka Elvis) operator
...
fixes #791
2015-05-28 23:03:30 +02:00
Victor Berchet
ec2d8cc2c8
feat(binding): throw on binding to a blank alias
...
fixes #2068
2015-05-28 22:37:29 +02:00
Jeff Cross
01fb8e6635
fix: fix clang errors
2015-05-28 11:08:26 -07:00
Jeff Cross
9d90128463
refactor(ChangeDetection): convert change detection tests to typescript
2015-05-28 10:01:30 -07:00
vsavkin
34cfc9f474
feat(di): added optional self parameter to Parent, Ancestor, and Unbounded
2015-05-28 09:53:06 -07:00
Ian Riley
ebe1e73b1a
refactor (test/test_lib): Ts'ifying test/test_lib
...
Translates AtScript files in test/test_lib to TypeScript.
Closes #2183
2015-05-28 09:50:59 -07:00
Ian Riley
8ce0a67c81
refactor (test/services): Ts'ifying test/services
...
Translates AtScript files in test/services to TypeScript
Closes #2193
2015-05-28 09:48:38 -07:00
Tim Blasi
c065fb1422
feat(dart/transform): Remove unnecessary .ng_deps.dart files
...
Removes `.ng_deps.dart` files which
1. Do not register any `@Injectable` classes
2. Do not call `initReflector` on any other `.ng_deps.dart` files.
Closes #1929
2015-05-28 07:51:10 -07:00
Tim Blasi
cda35101df
fix(facade): Fix bug in TS indexOf
...
startIndex defaults to -1, which in Chrome results in returning -1
regardless of the other parameters.
Added regression tests.
2015-05-28 06:56:24 -07:00
Julie Ralph
c32dbad747
feat(tests): add TestComponentBuilder
...
Adds a TestComponentBuilder for use in component level tests.
For usage examples, see test_component_builder_spec
Closes #1812
2015-05-27 17:15:13 -07:00
vsavkin
30b6542fc8
feat(core): added support for detecting lifecycle events based on interfaces
2015-05-27 16:23:42 -07:00
vsavkin
2b6a653050
feat(core): added missing interfaces for onDestroy and onAllChangesDone lifecycle events
2015-05-27 15:50:08 -07:00
vsavkin
34d75e8918
feat(reflector): added a method to get type's interfaces
2015-05-27 15:50:08 -07:00
Martin Probst
2c25055828
chore: reformat the code base using the clang-format 1.0.15.
2015-05-27 15:28:22 -07:00
Tim Blasi
a2770c8a52
refactor(change_detect): Flatten Js change detector template
...
Update the `ChangeDetectionJITGenerator` for clarity and similarity with
the upcoming Dart generated `ChangeDetector` classes.
2015-05-27 11:50:25 -07:00
Tobias Bosch
4a3fd5e855
fix(di): allow `@Inject(…)` to work in dart2js and dynamic reflection
...
Note: We can’t write a unit test for this as our unit tests
are running in Dartium, where the error does not occur.
However, we previously had a failure in our e2e tests
in `hello_world/index_dynamic.html`
when removing the TODOs in `application.ts`.
Closes #2185
2015-05-27 10:33:30 -07:00
Tobias Bosch
608017776e
fix(package.json): add `reflect-metadata` to package.json
...
Fixes #2170
2015-05-27 10:32:38 -07:00
Tobias Bosch
0c7f05f56a
fix(injectable): add missing @Injectables annotations
...
Closes #2173
2015-05-27 10:31:20 -07:00
Marc Laval
c6335c128e
feat(test_lib): add method to compare stringified DOM element
...
Closes #2106
2015-05-27 16:19:39 +02:00
Marc Laval
fb42d5908e
fix(test): solve CSS discrepancies across browsers
...
Closes #2177
2015-05-27 14:54:00 +02:00
Ian Riley
8609543ad0
refactor (test/facade): Ts'ify test/facade
...
Translate AtScript in test/facade to TypeScript
2015-05-27 08:10:11 +02:00
gdi2290
1db6870a81
docs(ng_for.ts): For => NgFor
2015-05-27 08:09:42 +02:00
Tobias Bosch
79f564be46
refactor(core): ts’ify tests
2015-05-26 17:01:31 -07:00
Tobias Bosch
23d59df81a
feat(test_lib): add `containsRegex`
2015-05-26 17:01:31 -07:00
Ian Riley
ef3e12e803
refactor (test/directives): ts'ify test/directives
...
Translate all of the AtScript code in .../test/directives to TypeScript.
Closes #2167
2015-05-26 16:51:38 -07:00
Kevin Moore
5fe88d63ef
chore: support the latest release of Dart logging package
2015-05-26 13:51:54 -07:00
Victor Berchet
26d5d17ebe
style: fix clang-format glitches
2015-05-26 21:00:44 +02:00
Victor Berchet
bb7ffce7eb
test(ShadowCss): add tests for keyframe rules
2015-05-26 19:42:17 +02:00
Victor Berchet
551586ced0
feat(RegExpWrapper): implement a test method
2015-05-26 19:42:17 +02:00
Tobias Bosch
1dc8ba6920
refactor(render): ts’ify tests
2015-05-26 09:38:26 -07:00
Tobias Bosch
d773b6a00a
fixed(spy): support `SpyObject` in Typescript as well
...
- allow `@IMPLEMENTS` as a decorator
- implement empty `noSuchMethod`
2015-05-26 09:25:16 -07:00
Naomi Black
f6cd26b0a6
docs(docgen): fixed a typo that was breaking dgeni
2015-05-22 21:47:34 -07:00
Naomi Black
5a52c0b71d
docs(di): fix missing export for dgeni docgen
2015-05-22 21:47:34 -07:00
gdi2290
662da0d728
feat(render): re-export render and export `DirectiveResolver`
...
Closes #2026
2015-05-22 17:38:00 -07:00
vsavkin
df59e969cf
chore(di): moved tests to typescript
2015-05-22 17:32:21 -07:00
vsavkin
d27e5512c0
chore(reflection): tsfy tests
2015-05-22 17:03:40 -07:00
yjbanov
d48fae3566
fix(core): resurrect OnChange interface
2015-05-22 16:48:00 -07:00
vsavkin
3525c9c074
chore(forms): moved tests/forms to typescript
2015-05-22 14:44:57 -07:00
Martin Probst
15f1eb28a2
fix(deps): Update clang-format to 1.0.14.
2015-05-22 09:39:15 -07:00
Marc Laval
4b98ed114e
fix(collection): iterator on Map keys is not supported (Safari)
...
Closes #2096
2015-05-22 15:41:01 +02:00
Marc Laval
d308e55e12
fix(collection): new Map(iterable) is not supported (Safari)
2015-05-22 15:40:44 +02:00
Victor Berchet
10bc7e948c
feat(key_event): alias esc to escape
...
fixes #2010
2015-05-22 15:39:21 +02:00
Victor Berchet
9988471fb8
test(fakeAsync): renable a test blocked on jasmine 2.3.3
2015-05-22 15:36:12 +02:00
Marc Laval
57b88ec2d6
fix(collection): new Set(iterable) is not supported (IE11, Safari)
...
Closes #2063
2015-05-22 15:16:49 +02:00
Victor Berchet
b1c9bf14b2
feat(ElementInjector): support an arbitrary number of bindings
...
fixes #1853
2015-05-22 13:42:53 +02:00
Marc Laval
588fbfd848
fix(test): use a not expandable CSS rule in ShadowCSS spec (Firefox)
...
Closes #2061
2015-05-22 13:32:24 +02:00
Marc Laval
b2a24e021f
fix(browser_adapter): HTMLStyleElement.innerText does not trigger creation of CSS rules (Firefox)
2015-05-22 13:32:07 +02:00
Marc Laval
661a04798e
fix(test): adds longer timers for NgZone and PromisePipe tests (IE11)
...
Closes #2055
2015-05-22 13:30:49 +02:00
Marc Laval
665ccafd73
fix(browser_adapter): event creation fails (IE11, Firefox)
2015-05-22 13:30:48 +02:00
Marc Laval
f35dbb99b5
fix(browser_adapter): element.getBoundingClientRect fails when element not in DOM (IE11)
2015-05-22 13:30:47 +02:00
Marc Laval
a393f84fa4
fix(browser_adapter): element.matches only available with prefix (IE11)
2015-05-22 13:30:47 +02:00
Marc Laval
92c2c33a84
fix(browser_adapter): assigning null to document.title sets the title to "null" (IE11, Firefox)
2015-05-22 13:30:46 +02:00
Marc Laval
9802debf71
fix(test): native shadow DOM is required (IE11, Firefox)
2015-05-22 13:30:45 +02:00
Marc Laval
2287938f5a
fix(router): event.defaultPrevented is not reliable (IE11)
2015-05-22 13:30:44 +02:00
Marc Laval
5103f080e9
fix(test): function.name is not available (IE11)
2015-05-22 13:30:44 +02:00
gdi2290
1f20ef9787
feat(router.js): export routerDirectives
2015-05-22 12:45:26 +02:00
gdi2290
d61a0dfa22
test(ObservablePipe): onDestroy shouldn't throw
2015-05-22 12:31:46 +02:00
Tobias Bosch
cc2c8f6b00
refactor(test): ts’if compiler integration tests.
2015-05-21 17:53:53 -07:00
vsavkin
30c3e5a84e
fix(forms): changed forms to create only one value accessor instead of always creating DefaultValueAccessor
2015-05-21 17:31:25 -07:00
yjbanov
2ff3873881
chore(transformers): remove bindProperty hack
2015-05-21 16:58:32 -07:00
Tobias Bosch
aec51d616b
refactor(ts'ify): ts’ify mocks, directives and test_lib
...
Also cleans up global types.
2015-05-21 15:33:37 -07:00
yjbanov
c5996529c3
chore(expressions): add explicit test for map vs property access
2015-05-21 14:41:26 -07:00
vsavkin
00c3693daa
feat(forms): migrated forms to typescript
2015-05-21 13:55:15 -07:00
vsavkin
fed86fc8ac
feat(injector): support forwardRef in toAlias
2015-05-21 09:52:43 -07:00
vsavkin
705ee46f31
fix(di): changed host and view injector to respect visibility
2015-05-21 09:17:56 -07:00
vsavkin
f210c41c1f
feat(di): changed toFactory to support dependency annotations
2015-05-21 08:34:48 -07:00
Julie Ralph
863eb3c559
chore(testing): update karma-jasmine and jasmine
...
Jasmine to jasmine-core 2.3.4.
Update tools tests using minijasminenode to directly use jasmine.
See #1860
2015-05-20 21:34:56 -07:00
vsavkin
b6b52e62b2
fix(element_injector): fixed element injector to inject view dependencies into its components
2015-05-20 17:48:04 -07:00
Tobias Bosch
e61d82b9be
refactor(core): ts’ify core
2015-05-20 16:30:41 -07:00
gdi2290
4afd2b4138
feat(PromisePipe): remove ref onDestroy
2015-05-20 14:00:57 -07:00
Rado Kirov
c45283216f
fix(router): router link should navigate to non-base Url.
...
While still displaying full base + custom part of url in the href.
2015-05-20 11:01:09 -07:00
Rado Kirov
826af401a9
fix(test_lib): fixes nested beforeEach.
2015-05-20 11:01:09 -07:00
vsavkin
28c2b8f432
fix(element_injector): fixed element injector to resolve dependencies of regular services
2015-05-20 10:56:33 -07:00
Alex Rickabaugh
c9ab8e4be8
fix(browser): template elements should have content imported instead of the element itself.
2015-05-20 10:31:12 -07:00
Victor Berchet
91ccc9af98
fix(XHRImpl): fix errors, add a spec
...
fixes #1715
2015-05-20 08:31:50 +02:00
Misko Hevery
a664f5a6de
fix: don't call onAllChangesDone on checkNoChanges
2015-05-20 08:27:48 +02:00
eggers
7643d979c7
docs(annotations): fixes
2015-05-20 08:23:35 +02:00
Victor Berchet
0ae89ac096
feat(CD): add support for === and !==
...
relates to #1500
2015-05-20 07:50:43 +02:00
Victor Berchet
6ec5d5daaf
refactor(async): extract timer related functions into a TimerWrapper
2015-05-20 07:47:46 +02:00
vsavkin
62b1a08f06
refactor(reflection): improved error message
2015-05-19 21:17:52 -07:00
Tobias Bosch
8aa3fcfb63
chore(build): don’t include `export var __esModule = true` in every file
...
But do it during the build process for cjs.
Right now we only need this when we transpile from ts
directly to es5. This is only the case in our
cis build, as for our browser build we only transpile
from ts to es6 via ts and then use traceur to do
the rest.
2015-05-19 15:12:59 -07:00
Tobias Bosch
1beadb8607
refactor(render): ts’ify render api
2015-05-19 15:12:59 -07:00
Tobias Bosch
73d15edef5
chore(build): add tsconfig.json to modules/angular2
...
This allows to use `tsc` directly on Angular2, e.g.
```
./node_modules/.bin/tsc -w -p modules/angular2/
```
2015-05-19 15:12:58 -07:00
Brian Ford
791caf0037
fix(router): use appRootComponentToken to get root route configs
...
Closes #1947
2015-05-19 14:36:45 -07:00
Yegor Jbanov
8ab773538b
fix(errors): require passing stack traces explicitly in ng2 own code
2015-05-19 12:48:00 -07:00
Peter Bacon Darwin
8b9400ad92
docs(di/injector): remove invalid tab chars
...
These tabs were breaking the jade syntax generation
2015-05-19 14:38:07 +01:00
Peter Bacon Darwin
3571450b42
docs(directives.js): remove invalid asterisk
...
This character was breaking the doc-gen
2015-05-19 14:38:07 +01:00
Victor Berchet
0f002a5b18
feat(fakeAsync): allow simulating the passage of time
2015-05-19 06:51:15 +02:00
vsavkin
b066b8d15a
feat(di): added hostInjector and viewInjector to the Directive annotation
2015-05-18 18:30:53 -07:00
vsavkin
7b511462af
refactor(core): renamed injectables into appInjector
...
BREAKING CHANGES
Before:
@Component({injectables: [Type]} class MyCmp{}
After:
@Component({appInjector: [Type]} class MyCmp{}
2015-05-18 18:30:52 -07:00
vsavkin
3a53f67911
feat(di): removed publishAs
...
BREAKING CHANGES
Removes the publishAs property from the Component annotation.
2015-05-18 18:30:52 -07:00
vsavkin
155b1e2b35
feat(pipe): reexported pipes to genereate docs
2015-05-18 18:24:26 -07:00
Brian Ford
83b97c485b
refactor(router): use DynamicComponentLoader instead of ViewContainer
2015-05-18 15:57:08 -07:00
Brian Ford
5db89071d4
fix(router): improve route matching priorities
2015-05-18 15:57:08 -07:00
Brian Ford
c29ab86d85
refactor(router): improve control flow of descendant route activation
2015-05-18 15:57:08 -07:00
Brian Ford
6b02cb9b44
test(router): rename helpers in test
2015-05-18 15:57:08 -07:00
gdi2290
f9fd4926ef
docs(pipes): fix @View
...
we all copy/pasta ObservablePipe which had the typo
Closes #1958
2015-05-18 14:34:37 -07:00
gdi2290
986038242a
feat(change_detection): json pipe
...
Closes #1957
2015-05-18 14:34:37 -07:00
Josef Meier
8e84f8a1c4
chore: don't throw if paramTypes is undefined.
...
Closes #1955
2015-05-18 14:34:37 -07:00
Tim Blasi
edfbc25768
style(change detect): Fix typo unitialized => uninitialized
...
Closes #1928
2015-05-18 14:34:37 -07:00
Tim Blasi
05a1c6c183
perf(compiler): Avoid unnecessary List concats
...
Update `BindingRecordsCreator#getBindingRecords` and `ProtoRecordBuilder#addAst`
to avoid unnecessary calls to `ListWrapper.concat`.
Closes #1905
2015-05-18 14:34:36 -07:00
Pawel Kozlowski
3011cd86bd
feat(compiler): special-case class attribute in hostAttributes
...
Closes #1774
Closes #1841
2015-05-18 14:34:36 -07:00
vsavkin
11e4385173
feat(forms): improved error messages
...
Closes #1839
2015-05-18 14:34:36 -07:00
Victor Berchet
ad29b12cde
doc(NgFor): fix inline doc
2015-05-18 23:12:41 +02:00
Victor Berchet
842459aa46
doc: fix & sync with latest updates
2015-05-18 23:11:45 +02:00
Victor Berchet
b033416a45
doc(DI): fix inline doc in binding.ts
...
fixes #1894
2015-05-18 23:10:41 +02:00
Victor Berchet
7310b09a1a
doc(UrlResolver): inline doc
...
fixes #1732
2015-05-18 23:09:35 +02:00
Jeremy Elbourn
bb2eda2d15
feat(element_injector): allow @Optional for ProtoViewRef
2015-05-18 12:48:33 -07:00
Victor Berchet
0114cd97b6
refactor(RouteRegistry): optimize recognize()
2015-05-18 19:32:33 +02:00
Victor Berchet
fc13cdab3a
refactor(router): add types
2015-05-18 19:32:33 +02:00
Tim Blasi
3644036693
refactor(proto_view_factory): Move getChangeDetectorDefinitions out of ProtoViewFactory
...
Move `getChangeDetectorDefinitions` out of `ProtoViewFactory` since it
does not depend on any state in that object.
2015-05-18 08:45:59 -07:00
Misko Hevery
1eea2b254e
feat: allow for forward references in injection
...
It is possible for a class defined first to be referencing a class defined later,
and as a result at the time of the definition it is not possible to access the later's
class reference. This allows to refer to the later defined class through
a closure.Closes #1891
2015-05-15 21:12:57 -07:00