repochecker: Add loop dependency detection

This commit is contained in:
nemunaire 2022-11-07 16:22:16 +01:00
parent b784c448a0
commit a8fa58e111

View File

@ -506,6 +506,26 @@ func CheckExerciceFlags(i Importer, exercice *fic.Exercice, files []string, exce
}
}
// Check dependency loop
deps := flag.FlagsDeps
deploppcheck:
for i := 0; i < len(deps); i++ {
if deps[i] == flagid {
errs = append(errs, NewFlagError(exercice, nil, flag.Line, fmt.Errorf("flag dependency loop detected: flag id=%d: depends on itself", flagid)))
break
}
for _, d := range flags[deps[i]].FlagsDeps {
for _, dd := range deps {
if dd == d {
errs = append(errs, NewFlagError(exercice, nil, flag.Line, fmt.Errorf("flag dependency loop detected: flag id=%d: depends on itself", d)))
break deploppcheck
}
}
deps = append(deps, d)
}
}
// Check dependency to file
for _, lf := range flag.FilesDeps {
found := false