@@ -105,10 +105,10 @@ function split_idents(s::AbstractString)
105
105
return tuple (pidents... ):: VerTuple
106
106
end
107
107
108
- function VersionNumber ( v:: AbstractString )
108
+ function tryparse ( :: Type{VersionNumber} , v:: AbstractString )
109
109
v == " ∞" && return typemax (VersionNumber)
110
110
m = match (VERSION_REGEX, v)
111
- m === nothing && throw ( ArgumentError ( " invalid version string: $v " ))
111
+ m === nothing && return nothing
112
112
major, minor, patch, minus, prerl, plus, build = m. captures
113
113
major = parse (VInt, major)
114
114
minor = minor != = nothing ? parse (VInt, minor) : VInt (0 )
@@ -121,18 +121,14 @@ function VersionNumber(v::AbstractString)
121
121
return VersionNumber (major, minor, patch, prerl:: VerTuple , build:: VerTuple )
122
122
end
123
123
124
- parse (:: Type{VersionNumber} , v:: AbstractString ) = VersionNumber (v)
125
- function tryparse (:: Type{VersionNumber} , v:: AbstractString )
126
- try
127
- return VersionNumber (v)
128
- catch e
129
- if isa (e, InterruptException)
130
- rethrow (e)
131
- end
132
- return nothing
133
- end
124
+ function parse (:: Type{VersionNumber} , v:: AbstractString )
125
+ ver = tryparse (VersionNumber, v)
126
+ ver === nothing && throw (ArgumentError (" invalid version string: $v " ))
127
+ return ver
134
128
end
135
129
130
+ VersionNumber (v:: AbstractString ) = parse (VersionNumber, v)
131
+
136
132
"""
137
133
@v_str
138
134
0 commit comments