clang-format: [JS] fix union type spacing in object & array types.
authorMartin Probst <martin@probst.io>
Tue, 8 Aug 2017 15:00:58 +0000 (15:00 +0000)
committerMartin Probst <martin@probst.io>
Tue, 8 Aug 2017 15:00:58 +0000 (15:00 +0000)
commit0fb46bb222dc55a8233044744f6045f185b678c3
tree5d7cf596e152104ab8a6154300fdb298570453b6
parentf1a6552a95ef359317405b6b905e452c0577d22c
clang-format: [JS] fix union type spacing in object & array types.

Summary:
Previously, clang-format would insert whitespace in union types nested in object
and array types, as it wouldn't recognize those as a type operator:

    const x: {foo: number | null};
    const x: [number | null];

While this is correct for actual binary operators, clang-format should not
insert whitespace into union and intersection types to mark those:

    const x: {foo: number|null};
    const x: [number|null];

This change propagates that the context is not an expression by inspecting
the preceding token and marking as non-expression if it was a type colon.

Reviewers: djasper

Subscribers: klimek

Differential Revision: https://reviews.llvm.org/D36136

llvm-svn: 310367
clang/lib/Format/TokenAnnotator.cpp
clang/unittests/Format/FormatTestJS.cpp