fix(language-service): The pipe method should not include parentheses (#34485)
PR Close #34485
This commit is contained in:
parent
eab7f9f101
commit
ba2fd31e62
|
@ -469,11 +469,15 @@ class ExpressionVisitor extends NullTemplateVisitor {
|
||||||
if (s.name.startsWith('__') || !s.public || this.completions.has(s.name)) {
|
if (s.name.startsWith('__') || !s.public || this.completions.has(s.name)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// The pipe method should not include parentheses.
|
||||||
|
// e.g. {{ value_expression | slice : start [ : end ] }}
|
||||||
|
const shouldInsertParentheses = s.callable && s.kind !== ng.CompletionKind.PIPE;
|
||||||
this.completions.set(s.name, {
|
this.completions.set(s.name, {
|
||||||
name: s.name,
|
name: s.name,
|
||||||
kind: s.kind as ng.CompletionKind,
|
kind: s.kind as ng.CompletionKind,
|
||||||
sortText: s.name,
|
sortText: s.name,
|
||||||
insertText: s.callable ? `${s.name}()` : s.name,
|
insertText: shouldInsertParentheses ? `${s.name}()` : s.name,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -208,6 +208,18 @@ describe('completions', () => {
|
||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('for methods of pipe should not include parentheses', () => {
|
||||||
|
mockHost.override(TEST_TEMPLATE, `<h1>{{title | lowe~{pipe-method} }}`);
|
||||||
|
const marker = mockHost.getLocationMarkerFor(TEST_TEMPLATE, 'pipe-method');
|
||||||
|
const completions = ngLS.getCompletionsAt(TEST_TEMPLATE, marker.start);
|
||||||
|
expect(completions).toBeDefined();
|
||||||
|
expect(completions !.entries).toContain(jasmine.objectContaining({
|
||||||
|
name: 'lowercase',
|
||||||
|
kind: CompletionKind.PIPE as any,
|
||||||
|
insertText: 'lowercase',
|
||||||
|
}));
|
||||||
|
});
|
||||||
|
|
||||||
describe('in external template', () => {
|
describe('in external template', () => {
|
||||||
it('should be able to get entity completions in external template', () => {
|
it('should be able to get entity completions in external template', () => {
|
||||||
const marker = mockHost.getLocationMarkerFor(TEST_TEMPLATE, 'entity-amp');
|
const marker = mockHost.getLocationMarkerFor(TEST_TEMPLATE, 'entity-amp');
|
||||||
|
|
Loading…
Reference in New Issue