Skip to content

Commit

Permalink
fix(compiler): correctly detect when to serialze summary metadata (an…
Browse files Browse the repository at this point in the history
…gular#20668)

The change to improve error messages broke the summary serialization
of summaries.

PR Close angular#20668
  • Loading branch information
chuckjaz authored and wKoza committed Dec 2, 2017
1 parent d0e95e1 commit 7a6d611
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 3 deletions.
6 changes: 3 additions & 3 deletions packages/compiler/src/aot/summary_serializer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import {Summary, SummaryResolver} from '../summary_resolver';
import {OutputContext, ValueTransformer, ValueVisitor, visitValue} from '../util';

import {StaticSymbol, StaticSymbolCache} from './static_symbol';
import {ResolvedStaticSymbol, StaticSymbolResolver} from './static_symbol_resolver';
import {ResolvedStaticSymbol, StaticSymbolResolver, unwrapResolvedMetadata} from './static_symbol_resolver';
import {isLoweredSymbol, ngfactoryFilePath, summaryForJitFileName, summaryForJitName} from './util';

export function serializeSummaries(
Expand Down Expand Up @@ -453,10 +453,10 @@ function isCall(metadata: any): boolean {
}

function isFunctionCall(metadata: any): boolean {
return isCall(metadata) && metadata.expression instanceof StaticSymbol;
return isCall(metadata) && unwrapResolvedMetadata(metadata.expression) instanceof StaticSymbol;
}

function isMethodCallOnVariable(metadata: any): boolean {
return isCall(metadata) && metadata.expression && metadata.expression.__symbolic === 'select' &&
metadata.expression.expression instanceof StaticSymbol;
unwrapResolvedMetadata(metadata.expression.expression) instanceof StaticSymbol;
}
36 changes: 36 additions & 0 deletions packages/compiler/test/aot/summary_serializer_spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -430,5 +430,41 @@ export function main() {
importAs: symbolCache.get('someFile.ngfactory.d.ts', 'lib_1')
}]);
});

describe('with resolved symbols', () => {
it('should be able to serialize a call', () => {
init();
const serialized = serializeSummaries(
'someFile.ts', createMockOutputContext(), summaryResolver, symbolResolver, [{
symbol: symbolCache.get('/tmp/test.ts', 'main'),
metadata: {
__symbolic: 'call',
expression:
{__symbolic: 'resolved', symbol: symbolCache.get('/tmp/test2.ts', 'ref')}
}
}],
[]);
expect(serialized.json).not.toContain('error');
});

it('should be able to serialize a call to a method', () => {
init();
const serialized = serializeSummaries(
'someFile.ts', createMockOutputContext(), summaryResolver, symbolResolver, [{
symbol: symbolCache.get('/tmp/test.ts', 'main'),
metadata: {
__symbolic: 'call',
expression: {
__symbolic: 'select',
expression:
{__symbolic: 'resolved', symbol: symbolCache.get('/tmp/test2.ts', 'ref')},
name: 'foo'
}
}
}],
[]);
expect(serialized.json).not.toContain('error');
});
});
});
}

0 comments on commit 7a6d611

Please sign in to comment.