"import ... from '...';" and "export ... from '...';" should be treated the same
as goog.require/provide/module/forwardDeclare calls.
Details
- Reviewers
djasper
Diff Detail
Event Timeline
I am missing a decent explanation here. In contrast to C++ #includes as well as goog.require, etc. The import/export statements actually provide syntactic structure and can name multiple entities. Why would it be a good idea to always write them into a single line?
| unittests/Format/FormatTestJS.cpp | ||
|---|---|---|
| 867 | Really? | |
As discussed offline, this matches existing very similar behaviour for destructured goog.require calls:
const {X, Y, Z} = goog.require('a'); // won't ever wrap
import {X, Y, Z} from 'a'; // Shouldn't ever wrapIt also has the nice side effect that it prevents IWYU comments of the form:
import {X, Y, Z} from 'a'; // from //some/location... from wrapping.
| lib/Format/TokenAnnotator.cpp | ||
|---|---|---|
| 760 | Can you actually have: export {a as from};? | |
| 763 | Not a big fan of the code duplication in this loop. How about doing: if (Style.Language == FormatStyle::LK_JavaScript &&
((Line.First->is(tok::kw_export) && CurrentToken->is(Keywords.kw_from)) ||
isClosureImportStatement(*CurrentToken)))
return LT_ImportStatement;in the lower loop? The ImportStatement variable can likely go away then. | |
Can you actually have:
export {a as from};?