From ded4c7dd6b2fa124fadfc7602401536edb4f7407 Mon Sep 17 00:00:00 2001 From: Damien Date: Wed, 20 Sep 2023 18:47:48 +0200 Subject: [PATCH] =?UTF-8?q?Ajout=20d'une=20erreur=20pour=20une=20associati?= =?UTF-8?q?on=20sans=20r=C3=B4le=20sur=20la=20classe=20contenante=20(fix?= =?UTF-8?q?=20#302)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TopModel.Core/ModelErrorType.cs | 5 +++++ TopModel.Core/ModelStore.cs | 9 +++++++++ 2 files changed, 14 insertions(+) diff --git a/TopModel.Core/ModelErrorType.cs b/TopModel.Core/ModelErrorType.cs index f7d45316..e090a0e7 100644 --- a/TopModel.Core/ModelErrorType.cs +++ b/TopModel.Core/ModelErrorType.cs @@ -182,6 +182,11 @@ public enum ModelErrorType /// TMD1028, + /// + /// Cette association sur la classe '{classe}' doit définir un rôle. + /// + TMD1029, + /// /// Le flux de données est introuvable dans le fichier ou l'une de ses références. /// diff --git a/TopModel.Core/ModelStore.cs b/TopModel.Core/ModelStore.cs index a643d85c..2bd14239 100644 --- a/TopModel.Core/ModelStore.cs +++ b/TopModel.Core/ModelStore.cs @@ -1416,6 +1416,15 @@ IEnumerable ResolveAliases(IEnumerable alps) ModelErrorType = ModelErrorType.TMD0003 }; } + + foreach (var property in classe.Properties.OfType().Where(p => p.Association == classe && string.IsNullOrEmpty(p.Role))) + { + yield return new ModelError(modelFile, $"Cette association sur la classe '{classe}' doit définir un rôle.", property.Decorator is not null ? classe.DecoratorReferences.FirstOrDefault(dr => dr.ReferenceName == property.Decorator.Name) : property.GetLocation()) + { + IsError = true, + ModelErrorType = ModelErrorType.TMD1029 + }; + } } foreach (var use in modelFile.UselessImports.Where(u => dependencies.Any(d => d.Name == u.ReferenceName)))