The em
string interpolator works like the i
string interpolator, but marks nonsensical errors
using <nonsensical>...</nonsensical>
tags.
The em
string interpolator works like the i
string interpolator, but marks nonsensical errors
using <nonsensical>...</nonsensical>
tags.
Note: Instead of these tags, it would be nicer to return a data structure containing the message string
and a boolean indicating whether the message is sensical, but then we cannot use string operations
like concatenation, stripMargin etc on the values returned by em"...", and in the current error
message composition methods, this is crucial.
General purpose string formatter, with the following features:
General purpose string formatter, with the following features:
1) On all Showables, show
is called instead of toString
2) Exceptions raised by a show
are handled by falling back to toString
.
3) Sequences can be formatted using the desired separator between two %
signs,
eg i"myList = (${myList}%, %)"
4) Safe handling of multi-line margins. Left margins are skipped om the parts
of the string context *before* inserting the arguments. That way, we guard
against accidentally treating an interpolated value as a margin.
When getting a type mismatch it is useful to disambiguate placeholders like:
When getting a type mismatch it is useful to disambiguate placeholders like:
found: List[Int]
required: List[T]
where: T is a type in the initalizer of value s which is an alias of
String
the where
section as well as the printing context for the
placeholders - ("T is a...", printCtx)
Entrypoint for explanation string interpolator:
Entrypoint for explanation string interpolator:
ex"disambiguate $tpe1 and $tpe2"
Create explanation for single Recorded
type or symbol
This method will produce a colored type diff from the given arguments.
This method will produce a colored type diff from the given arguments. The idea is to do this for known cases that are useful and then fall back on regular syntax highlighting for the cases which are unhandled.
Please not that if used in combination with disambiguateTypes
the
correct Context
for printing should also be passed when calling the
method.
the (found, expected, changePercentage) with coloring to highlight the difference