3 weeks agoAdd support for exporting vertex colors master
Mikko Rasa [Sun, 21 Mar 2021 16:15:02 +0000 (18:15 +0200)]
Add support for exporting vertex colors

3 weeks agoRefactor the mesh exporter to use UVs directly from UV layers
Mikko Rasa [Sun, 21 Mar 2021 16:14:18 +0000 (18:14 +0200)]
Refactor the mesh exporter to use UVs directly from UV layers

3 weeks agoFix suspicious code in the mesh exporter
Mikko Rasa [Sun, 21 Mar 2021 16:11:14 +0000 (18:11 +0200)]
Fix suspicious code in the mesh exporter

The pivot_vertices function was expecting a list of vertices, but only
one vertex was passed in.  In fact the entire function seemed rather
useless now that the mesh is triangulated at an early stage.

3 weeks agoUpdate the desert pillars demo to work once again
Mikko Rasa [Sun, 21 Mar 2021 15:51:09 +0000 (17:51 +0200)]
Update the desert pillars demo to work once again

There's some warnings which require a more comprehensive overhaul to
get rid of.

3 weeks agoAdd a collection parameter to RenderPass::set_material
Mikko Rasa [Sun, 21 Mar 2021 15:50:19 +0000 (17:50 +0200)]
Add a collection parameter to RenderPass::set_material

If the pass did not already have a shader, it will try to create one from
the material and fail if it has no collection.

3 weeks agoRearrange vertex attributes
Mikko Rasa [Sun, 21 Mar 2021 15:28:59 +0000 (17:28 +0200)]
Rearrange vertex attributes

Since fixed function is no longer supported, I don't have to care what
attribute number Nvidia gives the fixed function attributes.  The old
layout had weird holes and made custom attributes hard to add; now the
free attributes are neatly at the end.

The duality between standard and generic attributes has been removed.
User-defined attributes now have their own range.  No deprecated
versions have been kept since they would be difficult to support

3 weeks agoRename VertexComponent to VertexAttribute
Mikko Rasa [Sun, 21 Mar 2021 09:40:30 +0000 (11:40 +0200)]
Rename VertexComponent to VertexAttribute

Also rename the related functions.  Get_component_type and
get_component_size in particular were problematic since pixelformat.h
uses the same names, and the ones in vertexformat.h don't take an enum

3 weeks agoRefactor vertex builders
Mikko Rasa [Sun, 21 Mar 2021 09:21:35 +0000 (11:21 +0200)]
Refactor vertex builders

All attributes are now stored in a single vector.

3 weeks agoRearrange various uniforms to be declared in the file which uses them
Mikko Rasa [Sat, 20 Mar 2021 17:33:15 +0000 (19:33 +0200)]
Rearrange various uniforms to be declared in the file which uses them

3 weeks agoSupport exporting unlit materials
Mikko Rasa [Sat, 20 Mar 2021 15:33:40 +0000 (17:33 +0200)]
Support exporting unlit materials

These use the emission surface type in Blender.  While that may seem
strange at first, it's actually a good match to how unlit materials
behave in a realtime scene.

3 weeks agoRefactor material property handling in the Blender exporter
Mikko Rasa [Sat, 20 Mar 2021 15:32:54 +0000 (17:32 +0200)]
Refactor material property handling in the Blender exporter

3 weeks agoAdjust uniform organization for UnlitMaterial
Mikko Rasa [Sat, 20 Mar 2021 13:37:12 +0000 (15:37 +0200)]
Adjust uniform organization for UnlitMaterial

Its only property are now stored in a struct to match other material
types.  This allows using the name "color" without conflicting with the
vertex attribute.  The texture uniform was also renamed in order to
avoid clashing with the texture() function.

3 weeks agoDecouple DataType from the OpenGL constants
Mikko Rasa [Sat, 20 Mar 2021 11:44:09 +0000 (13:44 +0200)]
Decouple DataType from the OpenGL constants

This allows defining the values so that manipulation of related types is
easier.  And I can't keep relying on the GL values anyway, with the goal
of adding a Vulkan backend.

4 weeks agoFix function inlining regressions
Mikko Rasa [Thu, 18 Mar 2021 13:16:10 +0000 (15:16 +0200)]
Fix function inlining regressions

4 weeks agoFix test case errors revealed by the previous commit
Mikko Rasa [Thu, 18 Mar 2021 11:27:55 +0000 (13:27 +0200)]
Fix test case errors revealed by the previous commit

And one case of adjusted error message too.

4 weeks agoAdd a bunch of validation for declarations in GLSL
Mikko Rasa [Thu, 18 Mar 2021 11:23:18 +0000 (13:23 +0200)]
Add a bunch of validation for declarations in GLSL

This is why I renamed the old DeclarationValidator a few commits ago,
because that name is a better fit here.

4 weeks agoSome touch-up of the debug dump
Mikko Rasa [Thu, 18 Mar 2021 11:21:09 +0000 (13:21 +0200)]
Some touch-up of the debug dump

Since nodes are now easily distinguished, there's no need for special
labeling branches in many cases.

4 weeks agoRecord correct source information in interface layout statements
Mikko Rasa [Thu, 18 Mar 2021 11:20:00 +0000 (13:20 +0200)]
Record correct source information in interface layout statements

4 weeks agoShow node source locations in AST dump
Mikko Rasa [Thu, 18 Mar 2021 11:04:48 +0000 (13:04 +0200)]
Show node source locations in AST dump

4 weeks agoRename DeclarationValidator to IdentifierValidator
Mikko Rasa [Thu, 18 Mar 2021 09:49:59 +0000 (11:49 +0200)]
Rename DeclarationValidator to IdentifierValidator

This name more accurately describes what it does.

4 weeks agoSupport layout qualifiers on GLSL interface blocks
Mikko Rasa [Wed, 17 Mar 2021 23:06:08 +0000 (01:06 +0200)]
Support layout qualifiers on GLSL interface blocks

4 weeks agoRename InterfaceBlock::name to block_name for clarity
Mikko Rasa [Wed, 17 Mar 2021 10:26:42 +0000 (12:26 +0200)]
Rename InterfaceBlock::name to block_name for clarity

4 weeks agoAdd push_back_nocopy to NodeContainer for clarity
Mikko Rasa [Tue, 16 Mar 2021 21:51:21 +0000 (23:51 +0200)]
Add push_back_nocopy to NodeContainer for clarity

It's not immediately obvious that pushing null and then assigning avoids
cloning the node.

4 weeks agoAdd idempotence test cases for GLSL compiler
Mikko Rasa [Tue, 16 Mar 2021 18:05:24 +0000 (20:05 +0200)]
Add idempotence test cases for GLSL compiler

Already compiled GLSL code should not change when passed through the
compiler again.

4 weeks agoRefactor the GLSL compiler test cases with a helper class
Mikko Rasa [Tue, 16 Mar 2021 18:04:30 +0000 (20:04 +0200)]
Refactor the GLSL compiler test cases with a helper class

I'm not super pleased with the virtual fail function in the helper, but
no better ideas came to mind so it can be like that for now.

4 weeks agoAlways show shader compiler diagnostics in debug builds
Mikko Rasa [Tue, 16 Mar 2021 18:00:51 +0000 (20:00 +0200)]
Always show shader compiler diagnostics in debug builds

4 weeks agoForbid certain operations in SL::Compiler if compilation isn't done
Mikko Rasa [Tue, 16 Mar 2021 17:53:04 +0000 (19:53 +0200)]
Forbid certain operations in SL::Compiler if compilation isn't done

In particular, Formatter can't deal with unresolved declarations.

4 weeks agoAdjust naming of generated variables
Mikko Rasa [Tue, 16 Mar 2021 17:06:37 +0000 (19:06 +0200)]
Adjust naming of generated variables

Using the inlined function name as a prefix easily produces inconsistent
results, so better to just use numbers after the name.

4 weeks agoTest case tweaks
Mikko Rasa [Tue, 16 Mar 2021 16:58:46 +0000 (18:58 +0200)]
Test case tweaks

4 weeks agoSupport inlining GLSL functions with parameters
Mikko Rasa [Tue, 16 Mar 2021 16:51:34 +0000 (18:51 +0200)]
Support inlining GLSL functions with parameters

4 weeks agoRefactor variable renaming in InlineContentInjector once again
Mikko Rasa [Tue, 16 Mar 2021 14:10:03 +0000 (16:10 +0200)]
Refactor variable renaming in InlineContentInjector once again

It should now be even better at recognizing conflicts, and avoid renaming
when not necessary.

4 weeks agoUse a temporary staging block in InlineContentInjector
Mikko Rasa [Tue, 16 Mar 2021 11:08:27 +0000 (13:08 +0200)]
Use a temporary staging block in InlineContentInjector

This allows the return variable name generation to avoid other names from
the source function, such as a return variable from previous inlining.

4 weeks agoRemove an obsolete variable
Mikko Rasa [Tue, 16 Mar 2021 10:08:16 +0000 (12:08 +0200)]
Remove an obsolete variable

This hasn't been used since 0388083.

4 weeks agoDon't modify the target block's variable map from InlineContentInjector
Mikko Rasa [Tue, 16 Mar 2021 09:38:55 +0000 (11:38 +0200)]
Don't modify the target block's variable map from InlineContentInjector

This felt hacky, and also seemed wrong since the variable map contains
the original names of the variables, not new ones.  Instead avoid
inlining more than one function per pass into any given function.

4 weeks agoCheck that the types of ternary branches exist before accessing them
Mikko Rasa [Mon, 15 Mar 2021 09:13:36 +0000 (11:13 +0200)]
Check that the types of ternary branches exist before accessing them

This fixes a bug introduced in 3a1fe83 and triggered by 5e4204e.

4 weeks agoEliminate constant ternary expressions
Mikko Rasa [Mon, 15 Mar 2021 09:05:26 +0000 (11:05 +0200)]
Eliminate constant ternary expressions

4 weeks agoImplement constant folding in the GLSL compiler
Mikko Rasa [Mon, 15 Mar 2021 09:05:12 +0000 (11:05 +0200)]
Implement constant folding in the GLSL compiler

This replaces the old expression evaluator with a more comprehensive
solution.  Folding constant expressions may open up further possibilities
for inlining.

4 weeks agoFix the declaration of the builtin textureLod function
Mikko Rasa [Sun, 14 Mar 2021 17:35:01 +0000 (19:35 +0200)]
Fix the declaration of the builtin textureLod function

4 weeks agoFix some bugs with name conflicts in function inlining
Mikko Rasa [Sun, 14 Mar 2021 17:13:02 +0000 (19:13 +0200)]
Fix some bugs with name conflicts in function inlining

One of these is a regression from b89239e, but the other has been around
for longer.

4 weeks agoResolve and validate the parameters of constructors in GLSL
Mikko Rasa [Sun, 14 Mar 2021 14:38:29 +0000 (16:38 +0200)]
Resolve and validate the parameters of constructors in GLSL

4 weeks agoMake variable renaming while inlining more robust
Mikko Rasa [Sun, 14 Mar 2021 14:11:07 +0000 (16:11 +0200)]
Make variable renaming while inlining more robust

It now prevents accidentally hiding global variables too.

4 weeks agoMove unique name generation to syntax.cpp
Mikko Rasa [Sun, 14 Mar 2021 13:51:32 +0000 (15:51 +0200)]
Move unique name generation to syntax.cpp

It's going to be needed elsewhere too.

4 weeks agoResolve constructors in FunctionResolver
Mikko Rasa [Sat, 13 Mar 2021 19:36:56 +0000 (21:36 +0200)]
Resolve constructors in FunctionResolver

4 weeks agoRemove the ParenthesizedExpression node type
Mikko Rasa [Sat, 13 Mar 2021 19:30:48 +0000 (21:30 +0200)]
Remove the ParenthesizedExpression node type

Since this is a proper compiler now, it's no longer necessary to
reproduce the parentheses from the input.

4 weeks agoCleanup ExpressionInliner
Mikko Rasa [Sat, 13 Mar 2021 19:29:40 +0000 (21:29 +0200)]
Cleanup ExpressionInliner

4 weeks agoMove parenthesizing expressions to Formatter
Mikko Rasa [Sat, 13 Mar 2021 19:15:07 +0000 (21:15 +0200)]
Move parenthesizing expressions to Formatter

4 weeks agoRearrange operator metadata
Mikko Rasa [Sat, 13 Mar 2021 19:08:28 +0000 (21:08 +0200)]
Rearrange operator metadata

A secondary token can now be stored for the operators that need one.

The member access operator is categorized as postfix because it only has
one actual operand (the right-hand side is just an identifier).

4 weeks agoBetter error message for the subscript operator
Mikko Rasa [Sat, 13 Mar 2021 14:22:43 +0000 (16:22 +0200)]
Better error message for the subscript operator

4 weeks agoAdd GLSL keywords for overriding functions
Mikko Rasa [Sat, 13 Mar 2021 14:02:41 +0000 (16:02 +0200)]
Add GLSL keywords for overriding functions

Overriding with a plain redefinition is now deprecated.

4 weeks agoFix some errors in the shader library
Mikko Rasa [Sat, 13 Mar 2021 14:00:36 +0000 (16:00 +0200)]
Fix some errors in the shader library

4 weeks agoDon't require builtin inputs to be linked
Mikko Rasa [Sat, 13 Mar 2021 13:56:19 +0000 (15:56 +0200)]
Don't require builtin inputs to be linked

Many of them provide access to external values from the API.

4 weeks agoAdd declarations for some more builtin variables
Mikko Rasa [Sat, 13 Mar 2021 11:51:25 +0000 (13:51 +0200)]
Add declarations for some more builtin variables

4 weeks agoAvoid generating passthroughs for builtin variables
Mikko Rasa [Sat, 13 Mar 2021 11:46:28 +0000 (13:46 +0200)]
Avoid generating passthroughs for builtin variables

4 weeks agoMake it deprecated to redeclare non-builtin variables
Mikko Rasa [Sat, 13 Mar 2021 11:38:26 +0000 (13:38 +0200)]
Make it deprecated to redeclare non-builtin variables

This is no longer necessary now that specialization constants are
supported.  There's some additional rules for declaring builtins too,
but I'll get back to those later.

4 weeks agoHandle redeclaration of variables in VariableResolver
Mikko Rasa [Fri, 12 Mar 2021 21:58:14 +0000 (23:58 +0200)]
Handle redeclaration of variables in VariableResolver

4 weeks agoAdd missing Diagnostic constructor
Mikko Rasa [Fri, 12 Mar 2021 19:10:39 +0000 (21:10 +0200)]
Add missing Diagnostic constructor

This is needed by the changes in 16c02e4.

4 weeks agoImplement the ternary operator in GLSL
Mikko Rasa [Fri, 12 Mar 2021 18:27:42 +0000 (20:27 +0200)]
Implement the ternary operator in GLSL

4 weeks agoRefactor Parser::parse_expression to take a pointer to the outer operator
Mikko Rasa [Fri, 12 Mar 2021 18:25:06 +0000 (20:25 +0200)]
Refactor Parser::parse_expression to take a pointer to the outer operator

4 weeks agoLimit GLSL passthrough statement to variables declared by that point
Mikko Rasa [Fri, 12 Mar 2021 09:53:11 +0000 (11:53 +0200)]
Limit GLSL passthrough statement to variables declared by that point

This fixes an issue where a base module's passthrough statement would
generate references to inputs declared in an importing module, resulting
in a compile error.

5 weeks agoFix a test case and add a couple more
Mikko Rasa [Thu, 11 Mar 2021 22:24:40 +0000 (00:24 +0200)]
Fix a test case and add a couple more

5 weeks agoImprove reporting of errors from function resolution
Mikko Rasa [Thu, 11 Mar 2021 22:23:10 +0000 (00:23 +0200)]
Improve reporting of errors from function resolution

If there are some overloads, report that none of them matched the
argument types.

5 weeks agoAvoid generating invalid interfaces in geometry shader
Mikko Rasa [Thu, 11 Mar 2021 21:39:59 +0000 (23:39 +0200)]
Avoid generating invalid interfaces in geometry shader

Geometry inputs need an extra array dimension compared to vertex shader
outputs, but multi-dimensional arrays currently can't be properly

5 weeks agoExpand the selection of available builtin GLSL functions
Mikko Rasa [Wed, 10 Mar 2021 13:35:42 +0000 (15:35 +0200)]
Expand the selection of available builtin GLSL functions

5 weeks agoSome rearranging and comments
Mikko Rasa [Wed, 10 Mar 2021 11:14:48 +0000 (13:14 +0200)]
Some rearranging and comments

5 weeks agoCount EmitVertex as referencing all active outputs
Mikko Rasa [Wed, 10 Mar 2021 11:05:41 +0000 (13:05 +0200)]
Count EmitVertex as referencing all active outputs

5 weeks agoRewrite UnusedVariableRemover
Mikko Rasa [Wed, 10 Mar 2021 11:01:12 +0000 (13:01 +0200)]
Rewrite UnusedVariableRemover

The old implementation was getting too complex with its multitude of
flags.  The new one is based on the idea of reaching definition analysis
and is much more straightforward.

5 weeks agoDon't omit builtins when formatting a single node
Mikko Rasa [Wed, 10 Mar 2021 10:18:23 +0000 (12:18 +0200)]
Don't omit builtins when formatting a single node

This produces more useful output for debugging.

5 weeks agoMake ConstantConditionEliminator less trigger-happy
Mikko Rasa [Wed, 10 Mar 2021 10:12:26 +0000 (12:12 +0200)]
Make ConstantConditionEliminator less trigger-happy

Since I removed the variable value tracking in 1cd0ea7 it started
optimizing conditions on specialization constants, even when they
had not been specialized yet.

5 weeks agoCheck for existence of required version in Formatter
Mikko Rasa [Wed, 10 Mar 2021 10:03:24 +0000 (12:03 +0200)]
Check for existence of required version in Formatter

This way it doesn't depend on whether get_combined_glsl or get_stage_glsl
was called.

5 weeks agoSupport compile modes and specialization constants in the test harness
Mikko Rasa [Wed, 10 Mar 2021 10:01:33 +0000 (12:01 +0200)]
Support compile modes and specialization constants in the test harness

5 weeks agoAvoid removing outputs which are referenced but not assigned
Mikko Rasa [Tue, 9 Mar 2021 20:27:04 +0000 (22:27 +0200)]
Avoid removing outputs which are referenced but not assigned

The values from such reads are undefined but the variables should be
kept nevertheless.

5 weeks agoRename and rearrange a few things
Mikko Rasa [Tue, 9 Mar 2021 17:27:58 +0000 (19:27 +0200)]
Rename and rearrange a few things

5 weeks agoRequire GLSL functions to be declared before use
Mikko Rasa [Tue, 9 Mar 2021 17:17:36 +0000 (19:17 +0200)]
Require GLSL functions to be declared before use

5 weeks agoAdd declarations for most of the builtin functions in GLSL
Mikko Rasa [Tue, 9 Mar 2021 17:16:42 +0000 (19:16 +0200)]
Add declarations for most of the builtin functions in GLSL

5 weeks agoValidate return types of overloaded functions
Mikko Rasa [Tue, 9 Mar 2021 14:00:19 +0000 (16:00 +0200)]
Validate return types of overloaded functions

5 weeks agoAdd support for function overloading
Mikko Rasa [Tue, 9 Mar 2021 13:08:43 +0000 (15:08 +0200)]
Add support for function overloading

5 weeks agoResolve functions after inlining functions
Mikko Rasa [Tue, 9 Mar 2021 12:34:09 +0000 (14:34 +0200)]
Resolve functions after inlining functions

Inlining clones expressions, and the clones FunctionCall nodes don't have
a declaration pointer.

5 weeks agoProperly use r_any_resolved in FunctionResolver
Mikko Rasa [Tue, 9 Mar 2021 12:31:22 +0000 (14:31 +0200)]
Properly use r_any_resolved in FunctionResolver

Apparently lacking this has not caused any trouble so far, but it would

5 weeks agoHandle expression replacement through TraversingVisitor
Mikko Rasa [Tue, 9 Mar 2021 10:05:29 +0000 (12:05 +0200)]
Handle expression replacement through TraversingVisitor

There were several cases missing, like VariableResolver not handling
replacement of swizzles in return statements.  This way each of the
visitors can just concentrate on what they're actually doing.

5 weeks agoUse accurate assignment targets in ExpressionInliner
Mikko Rasa [Tue, 9 Mar 2021 08:39:58 +0000 (10:39 +0200)]
Use accurate assignment targets in ExpressionInliner

This fixes an issue where it inline an assignment to a subfield in place
of a reference to the whole variable.

5 weeks agoRefactor UnusedVariableRemover
Mikko Rasa [Tue, 9 Mar 2021 08:21:18 +0000 (10:21 +0200)]
Refactor UnusedVariableRemover

It can now track and remove named interface blocks.

5 weeks agoRecord assignment targets more precisely
Mikko Rasa [Tue, 9 Mar 2021 07:43:08 +0000 (09:43 +0200)]
Record assignment targets more precisely

If the assignment is to a structure or vector field or an array element,
it's recorded to the node so optimizers can better match assignments and
references (they don't do that yet).

5 weeks agoSort diagnostics according to their provoking location
Mikko Rasa [Mon, 8 Mar 2021 20:14:41 +0000 (22:14 +0200)]
Sort diagnostics according to their provoking location

5 weeks agoRecord information of the provoking location of a diagnostic
Mikko Rasa [Mon, 8 Mar 2021 20:13:55 +0000 (22:13 +0200)]
Record information of the provoking location of a diagnostic

In case of diagnostics providing extra information to a previous one,
this can be different from the direct location.

5 weeks agoValidate member names
Mikko Rasa [Mon, 8 Mar 2021 17:18:22 +0000 (19:18 +0200)]
Validate member names

5 weeks agoFix some errors in test cases
Mikko Rasa [Mon, 8 Mar 2021 15:37:06 +0000 (17:37 +0200)]
Fix some errors in test cases

5 weeks agoRecognize swizzles in GLSL
Mikko Rasa [Mon, 8 Mar 2021 14:59:12 +0000 (16:59 +0200)]
Recognize swizzles in GLSL

5 weeks agoResolve functions after inlining expressions
Mikko Rasa [Mon, 8 Mar 2021 14:05:57 +0000 (16:05 +0200)]
Resolve functions after inlining expressions

This fixes a bug introduced in c1d3a1d.

5 weeks agoTransform interface block contents into structs
Mikko Rasa [Mon, 8 Mar 2021 13:06:01 +0000 (15:06 +0200)]
Transform interface block contents into structs

This allows handling them in expression trees like everything else.  It
also helps with SPIR-V, which requires interface blocks to have struct

5 weeks agoRemove the NodeGatherer visitor
Mikko Rasa [Mon, 8 Mar 2021 11:49:03 +0000 (13:49 +0200)]
Remove the NodeGatherer visitor

It was somewhat poorly thought out since it's unable to gather nodes of
a base class type.

5 weeks agoPopulate the builtin module's type maps directly
Mikko Rasa [Mon, 8 Mar 2021 11:47:30 +0000 (13:47 +0200)]
Populate the builtin module's type maps directly

TypeResolver may do other, potentially disruptive things.  The contents
will be copied into the compiled module and properly resolved there.

5 weeks agoImprove reporting of function name conflicts
Mikko Rasa [Mon, 8 Mar 2021 00:49:40 +0000 (02:49 +0200)]
Improve reporting of function name conflicts

Prototype declarations were not being recorded, and definitions were
causing multiple definition errors to be reported in double.

5 weeks agoCheck for extra error lines in compiler output
Mikko Rasa [Mon, 8 Mar 2021 00:49:03 +0000 (02:49 +0200)]
Check for extra error lines in compiler output

Somehow I thought this was handled already

5 weeks agoApply replacement to variable declaration components in VariableResolver
Mikko Rasa [Sun, 7 Mar 2021 22:24:30 +0000 (00:24 +0200)]
Apply replacement to variable declaration components in VariableResolver

This got missed on cb8ee1f.

5 weeks agoComplain about named interface blocks if not supported
Mikko Rasa [Sun, 7 Mar 2021 22:16:15 +0000 (00:16 +0200)]
Complain about named interface blocks if not supported

5 weeks agoReport unsupported shader errors through the diagnostic mechanism
Mikko Rasa [Sun, 7 Mar 2021 22:14:55 +0000 (00:14 +0200)]
Report unsupported shader errors through the diagnostic mechanism

5 weeks agoEasier way of adding complex subtrees to GLSL debug dump
Mikko Rasa [Sun, 7 Mar 2021 22:03:25 +0000 (00:03 +0200)]
Easier way of adding complex subtrees to GLSL debug dump

5 weeks agoAdd another variation of a partially unused interface block
Mikko Rasa [Sun, 7 Mar 2021 16:32:04 +0000 (18:32 +0200)]
Add another variation of a partially unused interface block

I discovered a case where the compiler behaves incorrectly so recording
it here.

5 weeks agoFurther refactor the resolving process in SL::Compiler
Mikko Rasa [Sun, 7 Mar 2021 10:58:23 +0000 (12:58 +0200)]
Further refactor the resolving process in SL::Compiler

There's now five different types of resolve operations, many of which
depend on some others.  Better put the logic in one place to keep it

This also includes some rearrangements to the resolver classes to have
all of them return a boolean indicating if anything was done.

5 weeks agoAdditional rules for bit shift operators
Mikko Rasa [Sun, 7 Mar 2021 09:36:17 +0000 (11:36 +0200)]
Additional rules for bit shift operators