HomePhabricator

clang-format: [JS] wrap optional properties in type aliases.

Description

clang-format: [JS] wrap optional properties in type aliases.

Summary:
clang-format wraps object literal keys in an object literal if they are
marked as TT_SelectorNames and/or the colon is marked as
TT_DictLiteral. Previously, clang-format would accidentally work
because colons in type aliases were marked as TT_DictLiteral. r310367
fixed this to assing TT_JsTypeColon, which broke wrapping in certain
situations. However the root cause was that clang-format incorrectly
didn't skip questionmarks when detecting selector name.

This change fixes both locations to (1) assign TT_SelectorName and (2)
treat TT_JsTypeColon like TT_DictLiteral.

Previously:

type X = {
  a: string, b?: string,
};

Now:

type X = {
  a: string,
  b?: string,
};

Reviewers: djasper, sammccall

Subscribers: cfe-commits, klimek

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

Details