@@ -178,7 +178,10 @@ func ParseArgs(args []string) (files []*build.File, err error) {
178
178
hasFiles = true
179
179
continue
180
180
}
181
- inst , v = parseType ("" , Input )
181
+ inst , v , err = parseType ("" , Input )
182
+ if err != nil {
183
+ return nil , err
184
+ }
182
185
}
183
186
f , err := toFile (inst , v , s )
184
187
if err != nil {
@@ -202,7 +205,10 @@ func ParseArgs(args []string) (files []*build.File, err error) {
202
205
case qualifier != "" && ! hasFiles :
203
206
return nil , errors .Newf (token .NoPos , "scoped qualifier %q without file" , qualifier + ":" )
204
207
}
205
- inst , v = parseType (a [0 ], Input )
208
+ inst , v , err = parseType (a [0 ], Input )
209
+ if err != nil {
210
+ return nil , err
211
+ }
206
212
qualifier = a [0 ]
207
213
hasFiles = false
208
214
}
@@ -233,7 +239,10 @@ func ParseFile(s string, mode Mode) (*build.File, error) {
233
239
return nil , errors .Newf (token .NoPos , "empty file name in %q" , s )
234
240
}
235
241
236
- inst , val := parseType (scope , mode )
242
+ inst , val , err := parseType (scope , mode )
243
+ if err != nil {
244
+ return nil , err
245
+ }
237
246
return toFile (inst , val , file )
238
247
}
239
248
@@ -273,7 +282,7 @@ func toFile(i, v cue.Value, filename string) (*build.File, error) {
273
282
return f , nil
274
283
}
275
284
276
- func parseType (s string , mode Mode ) (inst , val cue.Value ) {
285
+ func parseType (s string , mode Mode ) (inst , val cue.Value , err error ) {
277
286
i := cuegenInstance .Value ()
278
287
i = i .Unify (i .Lookup ("modes" , mode .String ()))
279
288
v := i .LookupDef ("File" )
@@ -283,10 +292,15 @@ func parseType(s string, mode Mode) (inst, val cue.Value) {
283
292
if p := strings .IndexByte (t , '=' ); p >= 0 {
284
293
v = v .Fill (t [p + 1 :], "tags" , t [:p ])
285
294
} else {
286
- v = v .Unify (i .Lookup ("tags" , t ))
295
+ info := i .Lookup ("tags" , t )
296
+ if ! info .Exists () {
297
+ return inst , val , errors .Newf (token .NoPos ,
298
+ "unknown filetype %s" , t )
299
+ }
300
+ v = v .Unify (info )
287
301
}
288
302
}
289
303
}
290
304
291
- return i , v
305
+ return i , v , nil
292
306
}
0 commit comments