Compilers for languages with type inference algorithms often produce confusing type error messages and give a single error location which is sometimes far away from the real location of the error. Attempts at solving this problem often (1) fail to include the multiple program points which make up the type error; (2) report tree fragments which do not correspond to any place in the user program; and (3) give incorrect type information/diagnosis which can be highly confusing. We present Skalpel, a type error slicing tool which solves these problems by giving the programmer all and only the information involved with a type error to signiﬁcantly aid in diagnosis and repair of type errors. Skalpel relies on a simple and general constraint system, a sophisticated constraint generator which is linear in program size, and a constraint solver which is terminating. Skalpel’s constraint system can elegantly and eﬃciently handle intricate features such as SML’s open. We also show that the Skalpel tool is general enough to deal not only with one source code ﬁle and one single error, but highlights all and only the possible locations of the error(s) in all aﬀected ﬁles and produces all the culprit multiple program slices.
|Number of pages||45|
|Journal||Journal of Symbolic Computation|
|Issue number||Part 1|
|Early online date||18 Jul 2016|
|Publication status||Published - May 2017|
- constraint-based type inference
- automated type inference
- automated error diagnosis
- type error slicing
- improved error reports
FingerprintDive into the research topics of 'Skalpel: A constraint-based type error slicer for standard ML'. Together they form a unique fingerprint.
- School of Mathematical & Computer Sciences - Senior Research Fellow
- School of Mathematical & Computer Sciences, Computer Science - Senior Research Fellow
Person: Academic (Research & Teaching)