From 40479b13c1b65e6184072299681e496139e68771 Mon Sep 17 00:00:00 2001
From: Marcel Greter <marcel.greter@ocbnet.ch>
Date: Sun, 19 May 2019 01:05:08 +0200
Subject: [PATCH 07/12] Fix for modern class curly bracket initializers

---
 src/ast.hpp           | 26 +++++++++++++-------------
 src/ast_selectors.hpp |  8 ++++----
 src/ast_supports.hpp  |  2 +-
 3 files changed, 18 insertions(+), 18 deletions(-)

diff --git a/src/ast.hpp b/src/ast.hpp
index 16f2cf0e..82f2578f 100644
--- a/src/ast.hpp
+++ b/src/ast.hpp
@@ -299,13 +299,13 @@ namespace Sass {
     mutable size_t hash_;
     Expression_Obj duplicate_key_;
     void reset_hash() { hash_ = 0; }
-    void reset_duplicate_key() { duplicate_key_ = {}; }
+    void reset_duplicate_key() { duplicate_key_ = Expression_Obj(); }
     virtual void adjust_after_pushing(std::pair<Expression_Obj, Expression_Obj> p) { }
   public:
     Hashed(size_t s = 0)
     : elements_(ExpressionMap(s)),
       list_(std::vector<Expression_Obj>()),
-      hash_(0), duplicate_key_({})
+      hash_(0), duplicate_key_(Expression_Obj())
     { list_.reserve(s); }
     virtual ~Hashed();
     size_t length() const                  { return list_.size(); }
@@ -437,7 +437,7 @@ namespace Sass {
     ADD_PROPERTY(Selector_List_Obj, selector)
     ADD_PROPERTY(bool, is_root);
   public:
-    Ruleset(ParserState pstate, Selector_List_Obj s = {}, Block_Obj b = {});
+    Ruleset(ParserState pstate, Selector_List_Obj s = Selector_List_Obj(), Block_Obj b = Block_Obj());
     bool is_invisible() const override;
     ATTACH_AST_OPERATIONS(Ruleset)
     ATTACH_CRTP_PERFORM_METHODS()
@@ -450,7 +450,7 @@ namespace Sass {
     ADD_PROPERTY(Statement_Obj, node)
     ADD_PROPERTY(bool, group_end)
   public:
-    Bubble(ParserState pstate, Statement_Obj n, Statement_Obj g = {}, size_t t = 0);
+    Bubble(ParserState pstate, Statement_Obj n, Statement_Obj g = Statement_Obj(), size_t t = 0);
     bool bubbles() override;
     ATTACH_AST_OPERATIONS(Bubble)
     ATTACH_CRTP_PERFORM_METHODS()
@@ -463,7 +463,7 @@ namespace Sass {
     ADD_CONSTREF(char, type)
     ADD_CONSTREF(std::string, name)
   public:
-    Trace(ParserState pstate, std::string n, Block_Obj b = {}, char type = 'm');
+    Trace(ParserState pstate, std::string n, Block_Obj b = Block_Obj(), char type = 'm');
     ATTACH_AST_OPERATIONS(Trace)
     ATTACH_CRTP_PERFORM_METHODS()
   };
@@ -490,7 +490,7 @@ namespace Sass {
     ADD_PROPERTY(Selector_List_Obj, selector)
     ADD_PROPERTY(Expression_Obj, value)
   public:
-    Directive(ParserState pstate, std::string kwd, Selector_List_Obj sel = {}, Block_Obj b = {}, Expression_Obj val = {});
+    Directive(ParserState pstate, std::string kwd, Selector_List_Obj sel = Selector_List_Obj(), Block_Obj b = Block_Obj(), Expression_Obj val = Expression_Obj());
     bool bubbles() override;
     bool is_media();
     bool is_keyframes();
@@ -521,7 +521,7 @@ namespace Sass {
     ADD_PROPERTY(bool, is_custom_property)
     ADD_PROPERTY(bool, is_indented)
   public:
-    Declaration(ParserState pstate, String_Obj prop, Expression_Obj val, bool i = false, bool c = false, Block_Obj b = {});
+    Declaration(ParserState pstate, String_Obj prop, Expression_Obj val, bool i = false, bool c = false, Block_Obj b = Block_Obj());
     bool is_invisible() const override;
     ATTACH_AST_OPERATIONS(Declaration)
     ATTACH_CRTP_PERFORM_METHODS()
@@ -623,7 +623,7 @@ namespace Sass {
     ADD_PROPERTY(Expression_Obj, predicate)
     ADD_PROPERTY(Block_Obj, alternative)
   public:
-    If(ParserState pstate, Expression_Obj pred, Block_Obj con, Block_Obj alt = {});
+    If(ParserState pstate, Expression_Obj pred, Block_Obj con, Block_Obj alt = Block_Obj());
     virtual bool has_content() override;
     ATTACH_AST_OPERATIONS(If)
     ATTACH_CRTP_PERFORM_METHODS()
@@ -733,7 +733,7 @@ namespace Sass {
     ADD_PROPERTY(Arguments_Obj, arguments)
     ADD_PROPERTY(Parameters_Obj, block_parameters)
   public:
-    Mixin_Call(ParserState pstate, std::string n, Arguments_Obj args, Parameters_Obj b_params = {}, Block_Obj b = {});
+    Mixin_Call(ParserState pstate, std::string n, Arguments_Obj args, Parameters_Obj b_params = Parameters_Obj(), Block_Obj b = Block_Obj());
     ATTACH_AST_OPERATIONS(Mixin_Call)
     ATTACH_CRTP_PERFORM_METHODS()
   };
@@ -815,7 +815,7 @@ namespace Sass {
     ADD_PROPERTY(bool, is_negated)
     ADD_PROPERTY(bool, is_restricted)
   public:
-    Media_Query(ParserState pstate, String_Obj t = {}, size_t s = 0, bool n = false, bool r = false);
+    Media_Query(ParserState pstate, String_Obj t = String_Obj(), size_t s = 0, bool n = false, bool r = false);
     ATTACH_AST_OPERATIONS(Media_Query)
     ATTACH_CRTP_PERFORM_METHODS()
   };
@@ -841,7 +841,7 @@ namespace Sass {
     ADD_PROPERTY(Expression_Obj, feature)
     ADD_PROPERTY(Expression_Obj, value)
   public:
-    At_Root_Query(ParserState pstate, Expression_Obj f = {}, Expression_Obj v = {}, bool i = false);
+    At_Root_Query(ParserState pstate, Expression_Obj f = Expression_Obj(), Expression_Obj v = Expression_Obj(), bool i = false);
     bool exclude(std::string str);
     ATTACH_AST_OPERATIONS(At_Root_Query)
     ATTACH_CRTP_PERFORM_METHODS()
@@ -853,7 +853,7 @@ namespace Sass {
   class At_Root_Block final : public Has_Block {
     ADD_PROPERTY(At_Root_Query_Obj, expression)
   public:
-    At_Root_Block(ParserState pstate, Block_Obj b = {}, At_Root_Query_Obj e = {});
+    At_Root_Block(ParserState pstate, Block_Obj b = Block_Obj(), At_Root_Query_Obj e = At_Root_Query_Obj());
     bool bubbles() override;
     bool exclude_node(Statement_Obj s);
     ATTACH_AST_OPERATIONS(At_Root_Block)
@@ -868,7 +868,7 @@ namespace Sass {
     ADD_PROPERTY(Expression_Obj, default_value)
     ADD_PROPERTY(bool, is_rest_parameter)
   public:
-    Parameter(ParserState pstate, std::string n, Expression_Obj def = {}, bool rest = false);
+    Parameter(ParserState pstate, std::string n, Expression_Obj def = Expression_Obj(), bool rest = false);
     ATTACH_AST_OPERATIONS(Parameter)
     ATTACH_CRTP_PERFORM_METHODS()
   };
diff --git a/src/ast_selectors.hpp b/src/ast_selectors.hpp
index b7257083..c267e85a 100644
--- a/src/ast_selectors.hpp
+++ b/src/ast_selectors.hpp
@@ -314,7 +314,7 @@ namespace Sass {
   class Pseudo_Selector final : public Simple_Selector {
     ADD_PROPERTY(String_Obj, expression)
   public:
-    Pseudo_Selector(ParserState pstate, std::string n, String_Obj expr = {});
+    Pseudo_Selector(ParserState pstate, std::string n, String_Obj expr = String_Obj());
     virtual bool is_pseudo_element() const override;
     size_t hash() const override;
     virtual unsigned long specificity() const override;
@@ -443,9 +443,9 @@ namespace Sass {
     };
     Complex_Selector(ParserState pstate,
                      Combinator c = ANCESTOR_OF,
-                     Compound_Selector_Obj h = {},
-                     Complex_Selector_Obj t = {},
-                     String_Obj r = {});
+                     Compound_Selector_Obj h = Compound_Selector_Obj(),
+                     Complex_Selector_Obj t = Complex_Selector_Obj(),
+                     String_Obj r = String_Obj());
 
     bool empty() const;
 
diff --git a/src/ast_supports.hpp b/src/ast_supports.hpp
index 506d3a3b..43a1c2e5 100644
--- a/src/ast_supports.hpp
+++ b/src/ast_supports.hpp
@@ -42,7 +42,7 @@ namespace Sass {
   class Supports_Block : public Has_Block {
     ADD_PROPERTY(Supports_Condition_Obj, condition)
   public:
-    Supports_Block(ParserState pstate, Supports_Condition_Obj condition, Block_Obj block = {});
+    Supports_Block(ParserState pstate, Supports_Condition_Obj condition, Block_Obj block = Block_Obj());
     bool bubbles() override;
     ATTACH_AST_OPERATIONS(Supports_Block)
     ATTACH_CRTP_PERFORM_METHODS()
-- 
2.21.0.windows.1