-
Notifications
You must be signed in to change notification settings - Fork 90
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ProofGeneral cannot step over Fail
correctly when Set Ltac Backtrace
is enabled
#597
Comments
Yep, I can see that too, by pressing It's the string "In nested Ltac call" that causes PG to think that there's an error in that output. Not sure why the "has indeed failed" doesn't take precedence in detecting that there's in fact no issue. (PG uses special strings to determine that an error occurs, which can lead to funny consequences, like this:
) |
Thanks. FWIW "Set Ltac Backtrace" was even the default in Coq until recently (at least 8.8?) so this is a regression? |
Not sure: did it ever work? |
Good question, I was making assumptions... Insert Padme meme "but it had to work, right?" 😅. How did people ever use Fail before, when Proof General was the only IDE? |
Same as they do now: it works in most cases, I think?
But the Ltac backtrace case is special because the error header isn't on the same line. |
The change was in 8.10 but went the other way — before we always got backtraces, now we got a flag and they're disabled by default (coq/coq#9142). |
Fwiw, this is what I'm seeing locally:
|
I also just ran into this issue, where
This is problematic since |
Indeed this feature is broken. Strange that it has not be spotted earlier. |
I have a fix consisting in prefixing the regexp of coq-error-message by the following ugly regexp saying 'not "Message:". \\(?:[^:]\\|[^e]:\\|[^g]e:\\|[^a]ge:\\|[^s]age:\\|[^s]sage:\\|[^e]ssage:\\|[^m]essage:\\)\n This is not perfect but IMHO much sufficient. I only wonder if this would slow PG significantly. |
(useless to say that once again we all long for an better protocol...) |
Guess: It shouldn't unless the regexp engine has exponential backtracking; for actually regular regexp languages, there's no good reason for that, and the match should take time linear in the string, especially once you "optimize" the regexp matcher. |
The engine has exponential backtracking for sure (I don't know of a complete implementation of one that doesn't, though re2 comes close). Not sure if it matters here. |
Fix #597; ProofGeneral cannot step over `Fail` correctly
On my (Spacemacs) installation, if
Set Ltac Backtrace
is enabled,Fail
still works correctly in Coq (8.13.2), but ProofGeneral does not seem to understand that. The same example works in VsCoq.I was alerted to this interaction by @jhaag (but his symptoms are different, so questions remain).
The text was updated successfully, but these errors were encountered: