fix(compiler): properly implement pure pipes and change pipe syntax
Pure pipes as well as arrays and maps are implemented via proxy functions. This is faster than the previous implementation and also generates less code. BREAKING CHANGE: - pipes now take a variable number of arguments, and not an array that contains all arguments.
This commit is contained in:
@ -103,6 +103,11 @@ export function main() {
|
||||
.callMethod(o.BuiltinMethod.SubscribeObservable, [o.variable('listener')])
|
||||
.toStmt()))
|
||||
.toEqual('observable.listen(listener);');
|
||||
|
||||
expect(
|
||||
emitStmt(
|
||||
o.variable('fn').callMethod(o.BuiltinMethod.bind, [o.variable('someObj')]).toStmt()))
|
||||
.toEqual('fn;');
|
||||
});
|
||||
|
||||
it('should support literals', () => {
|
||||
|
@ -95,6 +95,11 @@ export function main() {
|
||||
.callMethod(o.BuiltinMethod.SubscribeObservable, [o.variable('listener')])
|
||||
.toStmt()))
|
||||
.toEqual('observable.subscribe(listener);');
|
||||
|
||||
expect(
|
||||
emitStmt(
|
||||
o.variable('fn').callMethod(o.BuiltinMethod.bind, [o.variable('someObj')]).toStmt()))
|
||||
.toEqual('fn.bind(someObj);');
|
||||
});
|
||||
|
||||
it('should support literals', () => {
|
||||
|
@ -88,8 +88,12 @@ export function main() {
|
||||
expect(expressions['concatedArray']).toEqual([0, 1]);
|
||||
expect(expressions['invokeMethodExternalInstance'])
|
||||
.toEqual({'data': 'someValue', 'param': 'someParam'});
|
||||
expect(expressions['invokeMethodExternalInstanceViaBind'])
|
||||
.toEqual({'data': 'someValue', 'param': 'someParam'});
|
||||
expect(expressions['invokeMethodDynamicInstance'])
|
||||
.toEqual({'data': 'someValue', 'dynamicProp': 'dynamicValue', 'param': 'someParam'});
|
||||
expect(expressions['invokeMethodDynamicInstanceViaBind'])
|
||||
.toEqual({'data': 'someValue', 'dynamicProp': 'dynamicValue', 'param': 'someParam'});
|
||||
});
|
||||
|
||||
it('should support conditionals', () => {
|
||||
|
@ -116,10 +116,24 @@ var _getExpressionsStmts: o.Statement[] = [
|
||||
'invokeMethodExternalInstance',
|
||||
o.variable('externalInstance').callMethod('someMethod', [o.literal('someParam')])
|
||||
],
|
||||
[
|
||||
'invokeMethodExternalInstanceViaBind',
|
||||
o.variable('externalInstance')
|
||||
.prop('someMethod')
|
||||
.callMethod(o.BuiltinMethod.bind, [o.variable('externalInstance')])
|
||||
.callFn([o.literal('someParam')])
|
||||
],
|
||||
[
|
||||
'invokeMethodDynamicInstance',
|
||||
o.variable('dynamicInstance').callMethod('dynamicMethod', [o.literal('someParam')])
|
||||
],
|
||||
[
|
||||
'invokeMethodDynamicInstanceViaBind',
|
||||
o.variable('dynamicInstance')
|
||||
.prop('dynamicMethod')
|
||||
.callMethod(o.BuiltinMethod.bind, [o.variable('dynamicInstance')])
|
||||
.callFn([o.literal('someParam')])
|
||||
],
|
||||
[
|
||||
'concatedArray',
|
||||
o.literalArr([o.literal(0)])
|
||||
|
@ -96,6 +96,11 @@ export function main() {
|
||||
.callMethod(o.BuiltinMethod.SubscribeObservable, [o.variable('listener')])
|
||||
.toStmt()))
|
||||
.toEqual('observable.subscribe(listener);');
|
||||
|
||||
expect(
|
||||
emitStmt(
|
||||
o.variable('fn').callMethod(o.BuiltinMethod.bind, [o.variable('someObj')]).toStmt()))
|
||||
.toEqual('fn.bind(someObj);');
|
||||
});
|
||||
|
||||
it('should support literals', () => {
|
||||
|
Reference in New Issue
Block a user