Skip to content

Consider property accesses in heritage clauses as type-space references - #22746

Merged
Wesley Wigham (weswigham) merged 1 commit into
microsoft:masterfrom
weswigham:namespace-dep-types-ref
Mar 29, 2018
Merged

Wesley Wigham (weswigham) merged 1 commit into
microsoft:masterfrom
weswigham:namespace-dep-types-ref

Conversation

@weswigham

Copy link
Copy Markdown
Member

at least for calculating type reference directives.

Fixes #15487

…es for calculating type reference directives
@DanielRosenwasser

Daniel Rosenwasser (DanielRosenwasser) commented Mar 21, 2018 •

Copy link
Copy Markdown
Member

Wait, I don't understand; in an implements heritage clause, I would have assumed we'd parse out a type reference, not a property access.

@RyanCavanaugh

Copy link
Copy Markdown
Member

parseHeritageClause doesn't differentiate implements from extends; it always interprets the operands as expressions:

        function parseHeritageClause(): HeritageClause | undefined {
            const tok = token();
            if (tok === SyntaxKind.ExtendsKeyword || tok === SyntaxKind.ImplementsKeyword) {
                const node = <HeritageClause>createNode(SyntaxKind.HeritageClause);
                node.token = tok;
                nextToken();
                node.types = parseDelimitedList(ParsingContext.HeritageClauseElement, parseExpressionWithTypeArguments);
                return finishNode(node);
            }

            return undefined;
        }

e.g. class C implements {} { } is a semantic error, not a syntax error

@weswigham

Wesley Wigham (weswigham) commented Mar 21, 2018 •

Copy link
Copy Markdown
Member Author

Yeah - it'd be kinda odd to parse them differently (it'd make handling them a pain, at least, since you'd need both type-space and value-space codepaths for everything syntactically heritage-clause related).

@weswigham
Wesley Wigham (weswigham) merged commit 3acafe5 into microsoft:master Mar 29, 2018
@weswigham
Wesley Wigham (weswigham) deleted the namespace-dep-types-ref branch March 29, 2018 20:51
@azz

Copy link
Copy Markdown

Thanks for the fix! Does this change also fix #15488?

@microsoft Microsoft (microsoft) locked and limited conversation to collaborators Jul 25, 2018
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants