@@ -295,34 +295,51 @@ rec {
295295 # List or attribute set of ...
296296 loaOf = elemType :
297297 let
298- convertAllLists = defs :
298+ convertAllLists = loc : defs :
299299 let
300300 padWidth = stringLength ( toString ( length defs ) ) ;
301301 unnamedPrefix = i : "unnamed-" + fixedWidthNumber padWidth i + "." ;
302302 in
303- imap1 ( i : convertIfList ( unnamedPrefix i ) ) defs ;
304-
305- convertIfList = unnamedPrefix : def :
303+ imap1 ( i : convertIfList loc ( unnamedPrefix i ) ) defs ;
304+ convertIfList = loc : unnamedPrefix : def :
306305 if isList def . value then
307306 let
308307 padWidth = stringLength ( toString ( length def . value ) ) ;
309308 unnamed = i : unnamedPrefix + fixedWidthNumber padWidth i ;
309+ res =
310+ { inherit ( def ) file ;
311+ value = listToAttrs (
312+ imap1 ( elemIdx : elem :
313+ { name = elem . name or ( unnamed elemIdx ) ;
314+ value = elem ;
315+ } ) def . value ) ;
316+ } ;
317+ option = concatStringsSep "." loc ;
318+ sample = take 3 def . value ;
319+ list = concatMapStrings ( x : ''{ name = "${ x . name or "unnamed" } "; ...} '' ) sample ;
320+ set = concatMapStrings ( x : ''${ x . name or "unnamed" } = {...}; '' ) sample ;
321+ msg = ''
322+ In file ${ def . file }
323+ a list is being assigned to the option config.${ option } .
324+ This will soon be an error as type loaOf is deprecated.
325+ See https://git.io/fj2zm for more information.
326+ Do
327+ ${ option } =
328+ { ${ set } ...}
329+ instead of
330+ ${ option } =
331+ [ ${ list } ...]
332+ '' ;
310333 in
311- { inherit ( def ) file ;
312- value = listToAttrs (
313- imap1 ( elemIdx : elem :
314- { name = elem . name or ( unnamed elemIdx ) ;
315- value = elem ;
316- } ) def . value ) ;
317- }
334+ lib . warn msg res
318335 else
319336 def ;
320337 attrOnly = attrsOf elemType ;
321338 in mkOptionType rec {
322339 name = "loaOf" ;
323340 description = "list or attribute set of ${ elemType . description } s" ;
324341 check = x : isList x || isAttrs x ;
325- merge = loc : defs : attrOnly . merge loc ( convertAllLists defs ) ;
342+ merge = loc : defs : attrOnly . merge loc ( convertAllLists loc defs ) ;
326343 getSubOptions = prefix : elemType . getSubOptions ( prefix ++ [ "<name?>" ] ) ;
327344 getSubModules = elemType . getSubModules ;
328345 substSubModules = m : loaOf ( elemType . substSubModules m ) ;
0 commit comments