Skip to content
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

Improve error catching for embedded expressions #801

Merged
merged 2 commits into from
Sep 21, 2022

Conversation

out-of-phaze
Copy link
Contributor

  • Errors inside embedded expressions are no longer printed twice.
  • Putting multiple expressions inside interpolation brackets now emits an error. (e.g. "["a""b"]" emits Expected end of embedded expression)
  • Adds unit tests for bad embedded expressions (expressionless but non-empty/multiple expressions)

Fix empty/whitespace embedded expressions

Fix errors in embedded expressions not propagating
Fix embedded expression unit tests

Fix embedded expression hole test
@wixoaGit wixoaGit enabled auto-merge (squash) September 21, 2022 17:27
@wixoaGit wixoaGit merged commit 02ae6f1 into OpenDreamProject:master Sep 21, 2022
Altoids1 added a commit to Altoids1/OpenDream that referenced this pull request Sep 21, 2022
I moved this code over into a helper proc so this new stuff has to be re-added here, awkwardly.
Altoids1 added a commit to Altoids1/OpenDream that referenced this pull request Oct 1, 2022
I moved this code over into a helper proc so this new stuff has to be re-added here, awkwardly.
Altoids1 added a commit to Altoids1/OpenDream that referenced this pull request Oct 1, 2022
…ct#720

I moved this code over into a helper proc so this new stuff has to be re-added here, awkwardly.

EDIT: Also patched for some changes caused by refs becoming semi-implemented.
wixoaGit pushed a commit that referenced this pull request Oct 11, 2022
… ones (#777)

* Moves String Token parsing into a helper proc

DMParser.cs is >2300 lines long before this change, and implementing pronouns is going to make it even longer, so I figure its time to put the helper file to some use.

Marked as a separate commit so you have better diffs to look at during review :^)

* Parser now ensures that string macros have interp value if needed

A dangling \hers or \The now causes a parsing error, as it should.

* Improves quality of string macro errors/warnings

We now, like BYOND, give a descriptive error message when user tries to use \her (a macro that can't exist).

While I was here, I decided to be even sweeter and add some leniency with unnecessarily-capitalized macros. 😊

* Refactors StringFormatType into a static class thing

Storing all of our formatting bytes as 0x00FF 0x00-whatever was both breaking parity and wasting bytes, so that's been completely changed in favour of a static class that handles encoding and decoding from formatting bytes, stored passive-aggressively into a not-as-important Unicode codeblock. Various other changes were made to prepare for a wider implementation of text macros.

This compiled and ran OK, so I'm committing here before I start implementing novel functionality.

* Adds null opcode checking in InternalResume()

I had a really strange bug recently and this helped me with debugging, so might as well commit it to master.

* Implements \the, \The, \A, \An

This gets the general pattern going for formatted strings.

At first, I thought that I was going to have to do two passes on the string to actually parse it correctly (to harvest the locations of all the interp values, so I know who owns what macro). Realized that I could just push another operand to the opcode proc and save a lot of that time, so that's what's here.

* Adds unimplemented warnings for \s and \th

Previously, they would actually cause a compiletime error were they to appear. Now the compiler treats them as it should.

* Implements suffix pronouns (\he, \himself, etc)

I need a better place to toss all these helpers.
EDIT: Accidentally left debug logging in there, whoops

* Re-implements new behaviour from #801, #720

I moved this code over into a helper proc so this new stuff has to be re-added here, awkwardly.

EDIT: Also patched for some changes caused by refs becoming semi-implemented.

* Adds some new unit tests for string interpolation

EDIT: adds StringInterpolation4.dm
EDIT EDIT: and the fifth test too

* Fixes weird bug with reversed string interp values

* Fixes whitespace not making strings proper

* Fixes \ref[] interpolations being used by suffix pronouns

* Wixoa review commit
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants