]> git.tdb.fi Git - libs/gl.git/blobdiff - source/glsl/resolve.h
Fix a name conflict in certain inlining scenarios
[libs/gl.git] / source / glsl / resolve.h
index f32d0cd530fe03b289d04176da2535e43e86221a..fdbebfe8e3a8e8249407545d5abfef5ca291dda0 100644 (file)
@@ -61,7 +61,7 @@ private:
        bool record_target = false;
        bool r_self_referencing = false;
        Assignment::Target r_assignment_target;
-       std::vector<VariableDeclaration *> redeclared_builtins;
+       std::vector<Statement *> redeclared_builtins;
        std::set<Node *> nodes_to_remove;
 
 public:
@@ -78,6 +78,7 @@ private:
        virtual void visit(BinaryExpression &);
        virtual void visit(Assignment &);
        void merge_layouts(Layout &, const Layout &);
+       void redeclare_builtin(VariableDeclaration &, VariableDeclaration &);
        virtual void visit(VariableDeclaration &);
        virtual void visit(InterfaceBlock &);
 };
@@ -101,6 +102,7 @@ private:
        };
 
        Stage *stage = 0;
+       const FunctionDeclaration *current_function = 0;
        std::vector<BasicTypeDeclaration *> basic_types;
        NodeList<Statement>::iterator insert_point;
        bool r_any_resolved = false;
@@ -132,6 +134,8 @@ private:
        virtual void visit(FunctionCall &);
        virtual void visit(BasicTypeDeclaration &);
        virtual void visit(VariableDeclaration &);
+       virtual void visit(FunctionDeclaration &);
+       virtual void visit(Return &);
 };
 
 /** Resolves function declarations and calls. */