Comments (4)
Yeah, I think ultimately the way to deal with this is to keep track of the start of the unterminated statement. Part of the issue is that #include
processing happens in the tokenizer, at a level below that of the glslang.y
bison parser. Error reporting is definitely an area where glslang could use considerable improvement, patches are definitely welcome.
from glslang.
@arcady-lunarg good to hear you concur with my line of thought. Do you have any highlevel pointers in terms of 'glslang.y', it's hard to understand thirdparty code at face value, so I'm wondering what generally would work best.
What I had in mind:
- I assume that you that this error statements in particulair are auto generated, so I'd have to patch up the catch all error handler.
- I assume that some kind of global context is available from bison, that is also available during the error handler(s)
- I'm thinking some kind of inline code to identify when statements are opened and terminated (state-machine)
- The part where the auto generated errors are handled then simply use the additional (context-)information to report altered locations.
Would this be a solid approach, keeping in mind, I'd like to refrain from seriously affecting other errors. Do you have an alternative/better suggestion?
from glslang.
I recommend reading up on how bison generated grammars work, but the key glslang-specific pieces you want to look at here is the TParseContext
class, and the interm
struct in glslang.y, and in particular its loc
member of type TSourceLoc
.
from glslang.
@arcady-lunarg I have prepared a pull request of the initial changes I drafted, it'd be great if you could have a look to see if you had any comments on it: #3559
from glslang.
Related Issues (20)
- Access `TIntermediate` with public headers HOT 2
- Crash in glslang_program_SPIRV_generate_with_options in Android (arm64-v8a) HOT 2
- Incorrect SPIR-V generated when using a fixed-size array of sampler2D with -R (relaxed vulkan rules) HOT 3
- Compile warning on VS2022
- Glslang version output? HOT 1
- SPIR-V Validation Errors when using Vulkan Relaxed Rules
- Implement GL_NV_bindless_texture HOT 6
- Broken SPIRV generated if using ternary operator ( " a ? b : c " ) as a direct argument to a texelFetch call HOT 2
- Grammar railroad diagram HOT 2
- nonuniformEXT not working correctly in conditionals HOT 3
- When will this be fixed? I have already sent PR HOT 2
- glslang must really warn when using uninitialized variables
- Conditional compilation is not handled correctly
- Crash on WebASM HOT 6
- error report when use GL_OES_EGL_image_external_essl3 HOT 3
- ABI break in glslang-14.2 HOT 1
- Incorrect SPIR-V can be generated when using samplers in structs with relaxed rules HOT 4
- Miss glslang_shader_shader_set_entry_point HOT 1
- Location aliasing should allow mismatch in auxiliary qualifier HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from glslang.