@@ -222,6 +222,12 @@ def __post_init__(self):
222222 if get_origin (default_type ) is list and not isinstance (value , list ):
223223 setattr (self , key , [value ])
224224
225+ for fixed_extension in self .fixed_extensions :
226+ if fixed_extension in self .extensions :
227+ raise ValueError (
228+ f"Fixed-form extension '{ fixed_extension } ' also appears in free-form extension list (`extensions = { self .extensions } `)"
229+ )
230+
225231 self .display = [item .lower () for item in self .display ]
226232 self .extensions = list (set (self .extensions ) | set (self .fpp_extensions ))
227233 self .exclude_dir .append (self .output_dir )
@@ -304,7 +310,10 @@ def load_toml_settings(directory: PathLike) -> Optional[ProjectSettings]:
304310 return None
305311
306312 print (f"Reading Ford options from { filename .absolute ()} " )
307- return ProjectSettings (** settings ["extra" ]["ford" ])
313+ try :
314+ return ProjectSettings (** settings ["extra" ]["ford" ])
315+ except ValueError as e :
316+ raise ValueError (f"Error parsing settings from '{ filename } ': { e } " )
308317
309318
310319def load_markdown_settings (
@@ -326,7 +335,12 @@ def load_markdown_settings(
326335 include_preprocessor = IncludePreprocessor (None , configs )
327336 settings [option ] = "\n " .join (include_preprocessor .run (value .splitlines ()))
328337
329- return ProjectSettings .from_markdown_metadata (settings ), "\n " .join (project_lines )
338+ try :
339+ return ProjectSettings .from_markdown_metadata (settings ), "\n " .join (
340+ project_lines
341+ )
342+ except ValueError as e :
343+ raise ValueError (f"Error parsing settings from '{ filename } ': { e } " )
330344
331345
332346def convert_setting (default_type : Type , key : str , value : Any ) -> Any :
0 commit comments