mprobst added inline comments.
================ Comment at: clang/lib/Format/TokenAnnotator.cpp:3522 + if ((Left.is(TT_JsTypeOperator) && Right.isTypeOrIdentifier()) || + (Left.isTypeOrIdentifier() || Left.is(TT_TemplateCloser)) && + Right.is(TT_JsTypeOperator)) ---------------- MyDeveloperDay wrote: > mprobst wrote: > > Why do we need this further qualification here? I'd have expect that you > > can simply "return Style.SpacesInJavaScriptUnion;"? identifier || template > > closer also sounds oddly specific, why exactly those? > Left = template closer, Right =JsTypeOperator is for this case > > ``` > type Foo = Bar<X> | Baz; > ^^^^^ > ``` > > Left = type or identifier, Right =JsTypeOperator is for this case > > > ``` > let x: A | B = A | B; > ^^^^^^^^^ > ``` What about: ``` let x: {foo: string}&{bar: number}; ``` I'm not sure including curlies would be comprehensive. It might be worth checking the TS grammar. But coming back, did you try this: ``` if (Left.is(TT_JsTypeOperator) || Right.is(TT_JsTypeOperator)) { return Style.SpacesInJavaScriptUnion; ``` (We might also need to do something in `spaceRequiredBefore`, maybe that fires earlier?) CHANGES SINCE LAST ACTION https://reviews.llvm.org/D117197/new/ https://reviews.llvm.org/D117197 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits