1
- open ! Stdune
1
+ open Import
2
2
3
3
type t =
4
4
{ name : Package_name .t
@@ -41,56 +41,59 @@ let encode { name; constraint_ } =
41
41
;;
42
42
43
43
(* Check for common typos in package dependency constraints *)
44
- let check_for_typo ~loc { name; constraint_ } =
45
- (* Early return if warnings are disabled *)
46
- if Dune_config.Config. (get typo_warnings) <> `Enabled then None
47
- else
48
- let open Package_constraint in
49
- match constraint_ with
50
- | Some (Uop (Relop. Eq, Value. String_literal "version" )) ->
51
- let message =
52
- User_message. make
53
- ~loc
54
- [ Pp. textf
55
- " Possible typo in constraint for dependency %S: '(= version)' might be a \
56
- mistake."
57
- (Package_name. to_string name)
58
- ]
59
- ~hints:
60
- [ Pp. textf
61
- " Did you mean to use the `:version` variable instead? Example: (depends \
62
- (%s (= :version)))"
63
- (Package_name. to_string name)
64
- ]
65
- in
66
- Some message
67
- | Some (Bvar var ) when String. equal (Package_variable_name. to_string var) " with_test" ->
68
- let message =
69
- User_message. make
70
- ~loc
71
- [ Pp. textf
72
- " Possible typo in constraint for dependency %S: ':with_test' might be a \
73
- mistake."
74
- (Package_name. to_string name)
75
- ]
76
- ~hints:
77
- [ Pp. textf
78
- " Did you mean to use ':with-test' instead? Example: (depends (%s \
79
- :with-test))"
80
- (Package_name. to_string name)
81
- ]
82
- in
83
- Some message
84
- | _ -> None
44
+ let dependency_constraint_variable_typo_warnings ~loc { name; constraint_ } =
45
+ match Dune_config.Config. (get typo_warnings) with
46
+ | `Enabled ->
47
+ (match constraint_ with
48
+ | Some
49
+ (Package_constraint. Uop
50
+ (Relop. Eq , Package_constraint.Value. String_literal " version" )) ->
51
+ let message =
52
+ User_message. make
53
+ ~loc
54
+ [ Pp. textf
55
+ " Possible typo in constraint for dependency %S: '(= version)' might be a \
56
+ mistake."
57
+ (Package_name. to_string name)
58
+ ]
59
+ ~hints:
60
+ [ Pp. textf
61
+ " Did you mean to use the `:version` variable instead? Example: (depends \
62
+ (%s (= :version)))"
63
+ (Package_name. to_string name)
64
+ ]
65
+ in
66
+ Some message
67
+ | Some (Package_constraint. Bvar var)
68
+ when String. equal (Package_variable_name. to_string var) " with_test" ->
69
+ let message =
70
+ User_message. make
71
+ ~loc
72
+ [ Pp. textf
73
+ " Possible typo in constraint for dependency %S: ':with_test' might be a \
74
+ mistake."
75
+ (Package_name. to_string name)
76
+ ]
77
+ ~hints:
78
+ [ Pp. textf
79
+ " Did you mean to use ':with-test' instead? Example: (depends (%s \
80
+ :with-test))"
81
+ (Package_name. to_string name)
82
+ ]
83
+ in
84
+ Some message
85
+ | _ -> None )
86
+ | `Disabled -> None
87
+ ;;
88
+
85
89
let decode =
86
- let open Dune_sexp. Decoder in
90
+ let open Decoder in
87
91
let constrained =
88
92
let + loc = loc
89
93
and + name = Package_name. decode
90
94
and + expr = Package_constraint. decode in
91
95
let result = { name; constraint_ = Some expr } in
92
- (* Check for typos and emit warnings *)
93
- (match check_for_typo ~loc result with
96
+ (match dependency_constraint_variable_typo_warnings ~loc result with
94
97
| Some msg -> User_warning. emit_message msg
95
98
| None -> () );
96
99
result
@@ -111,4 +114,4 @@ let to_dyn { name; constraint_ } =
111
114
let equal { name; constraint_ } t =
112
115
Package_name. equal name t.name
113
116
&& Option. equal Package_constraint. equal constraint_ t.constraint_
114
- ;;
117
+ ;;
0 commit comments