@@ -131,21 +131,28 @@ function hasInnerComments(sourceCode, range) {
131131 && comment . range [ 1 ] < range [ 1 ] )
132132}
133133
134+ function shouldBeMultiline ( sourceCode , range , items ) {
135+ return items . length > 1
136+ && ! sourceCode . text . slice ( range [ 0 ] , range [ 1 ] ) . includes ( '\n' )
137+ }
138+
134139function getFixedText ( node , items , options , sourceCode , range ) {
135140 const text = sourceCode . text
136141 const content = text . slice ( range [ 0 ] , range [ 1 ] )
137142 const sortedSpecifiers = [ ...items ]
138143 . sort ( compareItems )
139144 . map ( ( { specifier } ) => sourceCode . getText ( specifier ) )
140145
141- if ( ! content . includes ( '\n' ) ) {
146+ if ( ! content . includes ( '\n' ) && items . length < 2 ) {
142147 return ` ${ sortedSpecifiers . join ( ', ' ) } `
143148 }
144149
145150 const linebreak = getLinebreak ( text )
146151 const firstSpecifier = items [ 0 ] . specifier
147- const indent = getLineIndent ( text , firstSpecifier . range [ 0 ] )
148152 const closingIndent = getLineIndent ( text , node . range [ 0 ] )
153+ const indent = content . includes ( '\n' )
154+ ? getLineIndent ( text , firstSpecifier . range [ 0 ] )
155+ : `${ closingIndent } `
149156
150157 return `${ linebreak } ${ indent } ${ sortedSpecifiers . join ( `,${ linebreak } ${ indent } ` ) } ${ linebreak } ${ closingIndent } `
151158}
@@ -203,13 +210,18 @@ export default {
203210 }
204211
205212 const unorderedPair = getFirstUnorderedPair ( items )
213+ const sourceCode = context . sourceCode
214+ const range = getBracesRange ( node , items , sourceCode )
215+ const invalidMultiline = range && shouldBeMultiline (
216+ sourceCode ,
217+ range ,
218+ items
219+ )
206220
207- if ( ! unorderedPair ) {
221+ if ( ! unorderedPair && ! invalidMultiline ) {
208222 return
209223 }
210224
211- const sourceCode = context . sourceCode
212- const range = getBracesRange ( node , items , sourceCode )
213225 const fix = range && ! hasInnerComments ( sourceCode , range )
214226 ? fixer => fixer . replaceTextRange (
215227 range ,
@@ -219,11 +231,16 @@ export default {
219231 const [
220232 previousItem ,
221233 item
222- ] = unorderedPair
234+ ] = unorderedPair ?? [
235+ items [ 0 ] ,
236+ items [ 1 ]
237+ ]
223238
224239 context . report ( {
225240 node : item . specifier ,
226- message : getMessage ( previousItem , item ) ,
241+ message : unorderedPair
242+ ? getMessage ( previousItem , item )
243+ : 'Expected named imports to be multiline.' ,
227244 fix
228245 } )
229246 }
0 commit comments