lean4-htt/tests/lean/run/bigFromJson.lean
Sebastian Ullrich 48a1b07516
perf: improve FromJson construction for big inductives (#11981)
We used to create a deeply nested syntax tree for checking each
constructor one by one, now we do a single big string literal match.
2026-01-13 08:49:43 +00:00

36 lines
1.6 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import Lean
/-! This used to fail to maxrec due to an unoptimized tag matching construction. -/
open Lean
inductive Big where
| v0 | v1 | v2 | v3 | v4 | v5 | v6 | v7 | v8 | v9
| v10 | v11 | v12 | v13 | v14 | v15 | v16 | v17 | v18 | v19
| v20 | v21 | v22 | v23 | v24 | v25 | v26 | v27 | v28 | v29
| v30 | v31 | v32 | v33 | v34 | v35 | v36 | v37 | v38 | v39
| v40 | v41 | v42 | v43 | v44 | v45 | v46 | v47 | v48 | v49
| v50 | v51 | v52 | v53 | v54 | v55 | v56 | v57 | v58 | v59
| v60 | v61 | v62 | v63 | v64 | v65 | v66 | v67 | v68 | v69
| v70 | v71 | v72 | v73 | v74 | v75 | v76 | v77 | v78 | v79
| v80 | v81 | v82 | v83 | v84 | v85 | v86 | v87 | v88 | v89
| v90 | v91 | v92 | v93 | v94 | v95 | v96 | v97 | v98 | v99
| v100 | v101 | v102 | v103 | v104 | v105 | v106 | v107 | v108 | v109
| v110 | v111 | v112 | v113 | v114 | v115 | v116 | v117 | v118 | v119
| v120 | v121 | v122 | v123 | v124 | v125 | v126 | v127 | v128 | v129
| v130 | v131 | v132 | v133 | v134 | v135 | v136 | v137 | v138 | v139
| v140 | v141 | v142 | v143 | v144 | v145 | v146 | v147 | v148 | v149
| v150 | v151 | v152 | v153 | v154 | v155 | v156 | v157 | v158 | v159
| v160 | v161 | v162 | v163 | v164 | v165 | v166 | v167 | v168 | v169
| v170 | v171 | v172 | v173 | v174 | v175 | v176 | v177 | v178 | v179
| v180 | v181 | v182 | v183 | v184 | v185 | v186 | v187 | v188 | v189
| v190 | v191 | v192 | v193 | v194 | v195 | v196 | v197 | v198 | v199
deriving FromJson, ToJson, Repr
/-- info: "v103" -/
#guard_msgs in
#eval toJson Big.v103
/-- info: Except.ok (Big.v103) -/
#guard_msgs in
#eval fromJson? (α := Big) (toJson Big.v103)