mirror of
https://github.com/CatalaLang/catala.git
synced 2024-11-08 07:51:43 +03:00
Improvements on function arguments refactoring
- simplify naming in the french law examples - make messages yet more precise on function arguments mismatch
This commit is contained in:
parent
3766e9db2c
commit
97e0cfca6f
@ -910,6 +910,32 @@ let merge_conditions
|
||||
| None, Some cond -> cond
|
||||
| None, None -> Expr.elit (LBool true) (Untyped { pos = default_pos })
|
||||
|
||||
let rec arglist_eq_check pos_decl pos_def pdecl pdefs =
|
||||
match pdecl, pdefs with
|
||||
| [], [] -> ()
|
||||
| [], (arg, apos) :: _ ->
|
||||
Errors.raise_multispanned_error
|
||||
[Some "Declared here:", pos_decl; Some "Extra argument:", apos]
|
||||
"This definition has an extra, undeclared argument '%a'" Print.lit_style
|
||||
arg
|
||||
| (arg, apos) :: _, [] ->
|
||||
Errors.raise_multispanned_error
|
||||
[
|
||||
Some "Argument declared here:", apos;
|
||||
Some "Mismatching definition:", pos_def;
|
||||
]
|
||||
"This definition is missing argument '%a'" Print.lit_style arg
|
||||
| decl :: pdecl, def :: pdefs when Uid.MarkedString.equal decl def ->
|
||||
arglist_eq_check pos_decl pos_def pdecl pdefs
|
||||
| (decl_arg, decl_apos) :: _, (def_arg, def_apos) :: _ ->
|
||||
Errors.raise_multispanned_error
|
||||
[
|
||||
Some "Argument declared here:", decl_apos; Some "Defined here:", def_apos;
|
||||
]
|
||||
"Function argument name mismatch between declaration ('%a') and \
|
||||
definition ('%a')"
|
||||
Print.lit_style decl_arg Print.lit_style def_arg
|
||||
|
||||
let process_rule_parameters
|
||||
ctxt
|
||||
(def_key : Ast.ScopeDef.t Marked.pos)
|
||||
@ -937,19 +963,15 @@ let process_rule_parameters
|
||||
"This definition for %a is missing the arguments" Ast.ScopeDef.format_t
|
||||
decl_name
|
||||
| Some (pdecl, pos_decl), Some (pdefs, pos_def) ->
|
||||
if not (List.equal Uid.MarkedString.equal (List.map fst pdecl) pdefs) then
|
||||
Errors.raise_multispanned_error
|
||||
[Some "Declared here", pos_decl; Some "Mismatching definition", pos_def]
|
||||
"The arguments of this definition don't match the declaration."
|
||||
else
|
||||
let ctxt, params =
|
||||
List.fold_left_map
|
||||
(fun ctxt ((lbl, pos), ty) ->
|
||||
let ctxt, v = Name_resolution.add_def_local_var ctxt lbl in
|
||||
ctxt, ((v, pos), ty))
|
||||
ctxt pdecl
|
||||
in
|
||||
ctxt, Some (params, pos_def)
|
||||
arglist_eq_check pos_decl pos_def (List.map fst pdecl) pdefs;
|
||||
let ctxt, params =
|
||||
List.fold_left_map
|
||||
(fun ctxt ((lbl, pos), ty) ->
|
||||
let ctxt, v = Name_resolution.add_def_local_var ctxt lbl in
|
||||
ctxt, ((v, pos), ty))
|
||||
ctxt pdecl
|
||||
in
|
||||
ctxt, Some (params, pos_def)
|
||||
|
||||
(** Translates a surface definition into condition into a desugared {!type:
|
||||
Ast.rule} *)
|
||||
|
@ -3526,12 +3526,12 @@ alinéas du même article.
|
||||
```catala
|
||||
champ d'application CalculAidePersonnaliséeLogementAccessionPropriété:
|
||||
exception
|
||||
définition dépense_nette_minimale_d832_10 de aide_calculée_2_9_d832_10
|
||||
définition dépense_nette_minimale_d832_10 de allocation_mensuelle
|
||||
sous condition
|
||||
date_signature_prêt >= |1999-06-30|
|
||||
conséquence égal à
|
||||
mensualité_principale + montant_forfaitaire_charges_d832_10 -
|
||||
aide_calculée_2_9_d832_10
|
||||
allocation_mensuelle
|
||||
```
|
||||
|
||||
Dans les autres cas, cette dépense nette est obtenue en déduisant de la seule mensualité
|
||||
@ -3539,8 +3539,8 @@ déclarée le montant mensuel de l'aide calculé de la même façon.
|
||||
|
||||
```catala
|
||||
champ d'application CalculAidePersonnaliséeLogementAccessionPropriété:
|
||||
définition dépense_nette_minimale_d832_10 de aide_calculée_2_9_d832_10 égal à
|
||||
mensualité_principale - aide_calculée_2_9_d832_10
|
||||
définition dépense_nette_minimale_d832_10 de allocation_mensuelle égal à
|
||||
mensualité_principale - allocation_mensuelle
|
||||
```
|
||||
|
||||
Lorsque la dépense nette ainsi calculée est inférieure au produit des ressources et d'un
|
||||
@ -3551,10 +3551,10 @@ différence constatée.
|
||||
```catala
|
||||
champ d'application CalculAidePersonnaliséeLogementAccessionPropriété:
|
||||
définition abattement_dépense_nette_minimale_d832_10
|
||||
de aide_calculée_2_9_d832_10
|
||||
de allocation_mensuelle
|
||||
égal à
|
||||
soit dépense_nette_minimale égal à
|
||||
dépense_nette_minimale_d832_10 de aide_calculée_2_9_d832_10
|
||||
dépense_nette_minimale_d832_10 de allocation_mensuelle
|
||||
dans
|
||||
si dépense_nette_minimale<=
|
||||
ressources_ménage_avec_d832_18 * coefficient_multiplicateur_d832_17_3
|
||||
@ -4134,15 +4134,15 @@ l'aide est égal à la différence constatée.
|
||||
|
||||
```catala
|
||||
champ d'application CalculAidePersonnaliséeLogementFoyer:
|
||||
définition dépense_nette_minimale_d832_27 de aide_calculée_1_8_d832_24
|
||||
définition dépense_nette_minimale_d832_27 de allocation_mensuelle
|
||||
égal à
|
||||
équivalence_loyer_éligible - aide_calculée_1_8_d832_24
|
||||
équivalence_loyer_éligible - allocation_mensuelle
|
||||
|
||||
définition abattement_dépense_nette_minimale_d832_27
|
||||
de aide_calculée_1_8_d832_24
|
||||
de allocation_mensuelle
|
||||
égal à
|
||||
soit dépense_nette_minimale égal à
|
||||
dépense_nette_minimale_d832_27 de aide_calculée_1_8_d832_24
|
||||
dépense_nette_minimale_d832_27 de allocation_mensuelle
|
||||
dans
|
||||
si dépense_nette_minimale <= montant_forfaitaire_d832_27
|
||||
alors montant_forfaitaire_d832_27 - dépense_nette_minimale
|
||||
@ -4634,10 +4634,10 @@ des charges, le montant mensuel de l'allocation calculé selon les dispositions
|
||||
|
||||
```catala
|
||||
champ d'application CalculAllocationLogementAccessionPropriété:
|
||||
définition dépense_nette_minimale de aide_calculée_2_9_d832_10
|
||||
définition dépense_nette_minimale de allocation_mensuelle
|
||||
égal à
|
||||
charges_mensuelles_prêt + montant_forfaitaire_charges -
|
||||
aide_calculée_2_9_d832_10
|
||||
allocation_mensuelle
|
||||
```
|
||||
|
||||
Lorsque la dépense nette minimale est inférieure à un montant fixé par arrêté, il est
|
||||
@ -4646,10 +4646,10 @@ constatée.
|
||||
|
||||
```catala
|
||||
champ d'application CalculAllocationLogementAccessionPropriété:
|
||||
définition abattement_dépense_nette_minimale de aide_calculée_1_8_d832_24
|
||||
définition abattement_dépense_nette_minimale de allocation_mensuelle
|
||||
égal à
|
||||
soit dépense_nette_minimale égal à
|
||||
dépense_nette_minimale de aide_calculée_1_8_d832_24
|
||||
dépense_nette_minimale de allocation_mensuelle
|
||||
dans si
|
||||
dépense_nette_minimale < seuil_minimal_dépense_nette_minimale
|
||||
alors
|
||||
@ -4961,8 +4961,8 @@ calculé selon les modalités précisées aux deuxième à neuvième alinéas du
|
||||
|
||||
```catala
|
||||
champ d'application CalculAllocationLogementFoyer:
|
||||
définition dépense_nette_minimale de aide_calculée_2_9_d832_10 égal à
|
||||
équivalence_loyer + montant_forfaitaire_charges - aide_calculée_2_9_d832_10
|
||||
définition dépense_nette_minimale de allocation_mensuelle égal à
|
||||
équivalence_loyer + montant_forfaitaire_charges - allocation_mensuelle
|
||||
```
|
||||
|
||||
Lorsque sa valeur est inférieure à un montant fixé par arrêté, l'abattement sur
|
||||
@ -4971,12 +4971,12 @@ le montant mensuel de l'aide est égal à la différence constatée.
|
||||
```catala
|
||||
champ d'application CalculAllocationLogementFoyer:
|
||||
définition abattement_dépense_nette_minimale
|
||||
de aide_calculée_2_9_d832_10 égal à
|
||||
si dépense_nette_minimale de aide_calculée_2_9_d832_10 <
|
||||
de allocation_mensuelle égal à
|
||||
si dépense_nette_minimale de allocation_mensuelle <
|
||||
montant_minimal_dépense_nette_d842_17
|
||||
alors
|
||||
montant_minimal_dépense_nette_d842_17 -
|
||||
dépense_nette_minimale de aide_calculée_2_9_d832_10
|
||||
dépense_nette_minimale de allocation_mensuelle
|
||||
sinon
|
||||
0€
|
||||
```
|
||||
|
@ -621,9 +621,9 @@ déclaration champ d'application CalculAidePersonnaliséeLogementFoyer:
|
||||
résultat équivalence_loyer_éligible contenu argent
|
||||
résultat plafond_équivalence_loyer_éligible contenu argent
|
||||
interne abattement_dépense_nette_minimale_d832_27
|
||||
contenu argent dépend de aide_calculée_1_8_d832_24 contenu argent
|
||||
contenu argent dépend de allocation_mensuelle contenu argent
|
||||
interne dépense_nette_minimale_d832_27
|
||||
contenu argent dépend de aide_calculée_1_8_d832_24 contenu argent
|
||||
contenu argent dépend de allocation_mensuelle contenu argent
|
||||
interne montant_forfaitaire_d832_24 contenu argent
|
||||
interne montant_forfaitaire_d832_27 contenu argent
|
||||
interne montant_minimal_aide_d823_24 contenu argent
|
||||
@ -691,9 +691,9 @@ déclaration champ d'application
|
||||
état coeff_arrondi
|
||||
état seuil
|
||||
interne dépense_nette_minimale_d832_10 contenu argent
|
||||
dépend de aide_calculée_2_9_d832_10 contenu argent
|
||||
dépend de allocation_mensuelle contenu argent
|
||||
interne abattement_dépense_nette_minimale_d832_10
|
||||
contenu argent dépend de aide_calculée_2_9_d832_10 contenu argent
|
||||
contenu argent dépend de allocation_mensuelle contenu argent
|
||||
interne ressources_ménage_avec_d832_18 contenu argent
|
||||
interne montant_forfaitaire_charges_d832_10 contenu argent
|
||||
interne montant_forfaitaire_d832_10 contenu argent
|
||||
@ -867,9 +867,9 @@ déclaration champ d'application CalculAllocationLogementAccessionPropriété:
|
||||
interne seuil_minimal_ressources_ménage contenu argent
|
||||
interne taux_francs_vers_euros contenu décimal
|
||||
interne dépense_nette_minimale contenu argent
|
||||
dépend de aide_calculée_2_9_d832_10 contenu argent
|
||||
dépend de allocation_mensuelle contenu argent
|
||||
interne abattement_dépense_nette_minimale contenu argent
|
||||
dépend de aide_calculée_1_8_d832_24 contenu argent
|
||||
dépend de allocation_mensuelle contenu argent
|
||||
interne montant_minimal_aide_d842_6 contenu argent
|
||||
interne montant_forfaitaire_d842_11 contenu argent
|
||||
interne montant_forfaitaire_d842_12 contenu argent
|
||||
@ -935,9 +935,9 @@ déclaration champ d'application CalculAllocationLogementFoyer:
|
||||
CatégorieÉquivalenceLoyerAllocationLogementFoyer
|
||||
|
||||
interne dépense_nette_minimale contenu argent
|
||||
dépend de aide_calculée_2_9_d832_10 contenu argent
|
||||
dépend de allocation_mensuelle contenu argent
|
||||
interne abattement_dépense_nette_minimale contenu argent
|
||||
dépend de aide_calculée_2_9_d832_10 contenu argent
|
||||
dépend de allocation_mensuelle contenu argent
|
||||
interne montant_minimal_aide_d842_15 contenu argent
|
||||
interne montant_forfaitaire_d842_15 contenu argent
|
||||
interne montant_minimal_dépense_nette_d842_17 contenu argent
|
||||
|
@ -14,20 +14,20 @@ scope S:
|
||||
|
||||
```catala-test-inline
|
||||
$ catala typecheck
|
||||
[ERROR] The arguments of this definition don't match the declaration.
|
||||
[ERROR] Function argument name mismatch between declaration ('x') and definition ('y')
|
||||
|
||||
Declared here
|
||||
┌─⯈ tests/test_func/bad/param_inconsistency.catala_en:4.30-58:
|
||||
Argument declared here:
|
||||
┌─⯈ tests/test_func/bad/param_inconsistency.catala_en:4.41-42:
|
||||
└─┐
|
||||
4 │ internal f1 content decimal depends on x content integer
|
||||
│ ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
|
||||
│ ‾
|
||||
|
||||
|
||||
Mismatching definition
|
||||
┌─⯈ tests/test_func/bad/param_inconsistency.catala_en:10.16-20:
|
||||
Defined here:
|
||||
┌─⯈ tests/test_func/bad/param_inconsistency.catala_en:10.19-20:
|
||||
└──┐
|
||||
10 │ definition f1 of y under condition not cond
|
||||
│ ‾‾‾‾
|
||||
│ ‾
|
||||
|
||||
#return code 255#
|
||||
```
|
||||
|
@ -13,20 +13,20 @@ scope S:
|
||||
|
||||
```catala-test-inline
|
||||
$ catala typecheck
|
||||
[ERROR] The arguments of this definition don't match the declaration.
|
||||
[ERROR] Function argument name mismatch between declaration ('x') and definition ('y')
|
||||
|
||||
Declared here
|
||||
┌─⯈ tests/test_func/bad/param_inconsistency2.catala_en:4.30-58:
|
||||
Argument declared here:
|
||||
┌─⯈ tests/test_func/bad/param_inconsistency2.catala_en:4.41-42:
|
||||
└─┐
|
||||
4 │ internal f1 content decimal depends on x content integer
|
||||
│ ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
|
||||
│ ‾
|
||||
|
||||
|
||||
Mismatching definition
|
||||
┌─⯈ tests/test_func/bad/param_inconsistency2.catala_en:9.26-30:
|
||||
Defined here:
|
||||
┌─⯈ tests/test_func/bad/param_inconsistency2.catala_en:9.29-30:
|
||||
└─┐
|
||||
9 │ exception definition f1 of y under condition not cond
|
||||
│ ‾‾‾‾
|
||||
│ ‾
|
||||
|
||||
#return code 255#
|
||||
```
|
||||
|
@ -13,20 +13,20 @@ scope S:
|
||||
|
||||
```catala-test-inline
|
||||
$ catala typecheck
|
||||
[ERROR] The arguments of this definition don't match the declaration.
|
||||
[ERROR] Function argument name mismatch between declaration ('x') and definition ('y')
|
||||
|
||||
Declared here
|
||||
┌─⯈ tests/test_func/bad/param_inconsistency3.catala_en:4.30-58:
|
||||
Argument declared here:
|
||||
┌─⯈ tests/test_func/bad/param_inconsistency3.catala_en:4.41-42:
|
||||
└─┐
|
||||
4 │ internal f1 content decimal depends on x content integer
|
||||
│ ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
|
||||
│ ‾
|
||||
|
||||
|
||||
Mismatching definition
|
||||
┌─⯈ tests/test_func/bad/param_inconsistency3.catala_en:9.26-30:
|
||||
Defined here:
|
||||
┌─⯈ tests/test_func/bad/param_inconsistency3.catala_en:9.29-30:
|
||||
└─┐
|
||||
9 │ exception definition f1 of y under condition not cond
|
||||
│ ‾‾‾‾
|
||||
│ ‾
|
||||
|
||||
#return code 255#
|
||||
```
|
||||
|
Loading…
Reference in New Issue
Block a user