summaryrefslogtreecommitdiff
path: root/testsuite/tests/arrows
diff options
context:
space:
mode:
authorEvan Laforge <qdunkan@gmail.com>2015-11-24 12:43:18 +0100
committerBen Gamari <ben@smart-cactus.org>2015-11-24 14:02:58 +0100
commitc05fdddec71f9dc8ebe62d751ccf03367128072a (patch)
tree4afadb128af4af0f99dfb92fdbb9607bbeb64f04 /testsuite/tests/arrows
parentf09f2470a76bb08b7f51d2f5663daa672b86f618 (diff)
downloadhaskell-c05fdddec71f9dc8ebe62d751ccf03367128072a.tar.gz
Rearrange error msgs and add section markers (Trac #11014).
This puts the "Relevant bindings" section at the end. It uses a TcErrors.Report Monoid to divide messages by importance and then mappends them together. This is not the most efficient way since there are various intermediate Reports and list appends, but it probably doesn't matter since error messages shouldn't get that large, and are usually prepended. In practice, everything is `important` except `relevantBindings`, which is `supplementary`. ErrMsg's errMsgShortDoc and errMsgExtraInfo were extracted into ErrDoc, which has important, context, and suppelementary fields. Each of those three sections is marked with a bullet character, '•' on unicode terminals and '*' on ascii terminals. Since this breaks tons of tests, I also modified testlib.normalise_errmsg to strip out '•'s. --- Additional notes: To avoid prepending * to an empty doc, I needed to filter empty docs. This seemed less error-prone than trying to modify everyone who produces SDoc to instead produce Maybe SDoc. So I added `Outputable.isEmpty`. Unfortunately it needs a DynFlags, which is kind of bogus, but otherwise I think I'd need another Empty case for SDoc, and then it couldn't be a newtype any more. ErrMsg's errMsgShortString is only used by the Show instance, which is in turn only used by Show HscTypes.SourceError, which is in turn only needed for the Exception instance. So it's probably possible to get rid of errMsgShortString, but that would a be an unrelated cleanup. Fixes #11014. Test Plan: see above Reviewers: austin, simonpj, thomie, bgamari Reviewed By: thomie, bgamari Subscribers: simonpj, nomeata, thomie Differential Revision: https://phabricator.haskell.org/D1427 GHC Trac Issues: #11014
Diffstat (limited to 'testsuite/tests/arrows')
-rw-r--r--testsuite/tests/arrows/should_fail/T5380.stderr8
1 files changed, 4 insertions, 4 deletions
diff --git a/testsuite/tests/arrows/should_fail/T5380.stderr b/testsuite/tests/arrows/should_fail/T5380.stderr
index bff48f5233..177183225c 100644
--- a/testsuite/tests/arrows/should_fail/T5380.stderr
+++ b/testsuite/tests/arrows/should_fail/T5380.stderr
@@ -5,12 +5,12 @@ T5380.hs:7:27:
the type signature for:
testB :: not_bool -> (() -> ()) -> () -> not_unit
at T5380.hs:6:10
+ In the expression: b
+ In the expression: proc () -> if b then f -< () else f -< ()
Relevant bindings include
b :: not_bool (bound at T5380.hs:7:7)
testB :: not_bool -> (() -> ()) -> () -> not_unit
(bound at T5380.hs:7:1)
- In the expression: b
- In the expression: proc () -> if b then f -< () else f -< ()
T5380.hs:7:34:
Couldn't match type ‘not_unit’ with ‘()’
@@ -20,8 +20,8 @@ T5380.hs:7:34:
at T5380.hs:6:10
Expected type: () -> not_unit
Actual type: () -> ()
+ In the expression: f
+ In the command: f -< ()
Relevant bindings include
testB :: not_bool -> (() -> ()) -> () -> not_unit
(bound at T5380.hs:7:1)
- In the expression: f
- In the command: f -< ()