Formatting
Type members
Classlikes
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.
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:
- On all Showables,
show
is called instead oftoString
- Exceptions raised by a
show
are handled by falling back totoString
. - Sequences can be formatted using the desired separator between two
%
signs, egi"myList = (${myList}%, %)"
- 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.
Value members
Concrete methods
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 initializer of value s which is an alias of
String
- Returns:
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
Create explanation for single Recorded
type or symbol
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.
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.
- Returns:
the (found, expected, changePercentage) with coloring to highlight the difference