Skip to content

Commit 484b338

Browse files
committed
Add some missing union to correct Sass_Value vars
1 parent f0b308e commit 484b338

File tree

7 files changed

+48
-53
lines changed

7 files changed

+48
-53
lines changed

ast_def_macros.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ virtual Statement* perform(Operation<Statement*>* op) { return (*op)(this); }\
3333
virtual Expression* perform(Operation<Expression*>* op) { return (*op)(this); }\
3434
virtual Selector* perform(Operation<Selector*>* op) { return (*op)(this); }\
3535
virtual string perform(Operation<string>* op) { return (*op)(this); }\
36-
virtual Sass_Value* perform(Operation<Sass_Value*>* op) { return (*op)(this); }
36+
virtual union Sass_Value* perform(Operation<union Sass_Value*>* op) { return (*op)(this); }
3737

3838
#define ADD_PROPERTY(type, name)\
3939
protected:\

eval.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -321,7 +321,7 @@ namespace Sass {
321321
To_C to_c;
322322
union Sass_Value* c_args = sass_make_list(1, SASS_COMMA);
323323
sass_list_set_value(c_args, 0, message->perform(&to_c));
324-
Sass_Value* c_val = c_func(c_args, c_function, ctx.c_options);
324+
union Sass_Value* c_val = c_func(c_args, c_function, ctx.c_options);
325325
sass_delete_value(c_args);
326326
sass_delete_value(c_val);
327327
return 0;
@@ -354,7 +354,7 @@ namespace Sass {
354354
To_C to_c;
355355
union Sass_Value* c_args = sass_make_list(1, SASS_COMMA);
356356
sass_list_set_value(c_args, 0, message->perform(&to_c));
357-
Sass_Value* c_val = c_func(c_args, c_function, ctx.c_options);
357+
union Sass_Value* c_val = c_func(c_args, c_function, ctx.c_options);
358358
sass_delete_value(c_args);
359359
sass_delete_value(c_val);
360360
return 0;
@@ -384,7 +384,7 @@ namespace Sass {
384384
To_C to_c;
385385
union Sass_Value* c_args = sass_make_list(1, SASS_COMMA);
386386
sass_list_set_value(c_args, 0, message->perform(&to_c));
387-
Sass_Value* c_val = c_func(c_args, c_function, ctx.c_options);
387+
union Sass_Value* c_val = c_func(c_args, c_function, ctx.c_options);
388388
sass_delete_value(c_args);
389389
sass_delete_value(c_val);
390390
return 0;
@@ -665,7 +665,7 @@ namespace Sass {
665665
Expression* arg = static_cast<Expression*>(node);
666666
sass_list_set_value(c_args, i, arg->perform(&to_c));
667667
}
668-
Sass_Value* c_val = c_func(c_args, c_function, ctx.c_options);
668+
union Sass_Value* c_val = c_func(c_args, c_function, ctx.c_options);
669669
if (sass_value_get_tag(c_val) == SASS_ERROR) {
670670
error("error in C function " + c->name() + ": " + sass_error_get_message(c_val), c->pstate(), backtrace());
671671
} else if (sass_value_get_tag(c_val) == SASS_WARNING) {

expand.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -322,7 +322,7 @@ namespace Sass {
322322
Statement* Expand::operator()(If* i)
323323
{
324324
if (*i->predicate()->perform(&eval)) {
325-
append_block(i->consequent());
325+
append_block(i->block());
326326
}
327327
else {
328328
Block* alt = i->alternative();

sass_values.cpp

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ extern "C" {
156156

157157
union Sass_Value* ADDCALL sass_make_boolean(bool val)
158158
{
159-
Sass_Value* v = (Sass_Value*) calloc(1, sizeof(Sass_Value));
159+
union Sass_Value* v = (Sass_Value*) calloc(1, sizeof(Sass_Value));
160160
if (v == 0) return 0;
161161
v->boolean.tag = SASS_BOOLEAN;
162162
v->boolean.value = val;
@@ -165,7 +165,7 @@ extern "C" {
165165

166166
union Sass_Value* ADDCALL sass_make_number(double val, const char* unit)
167167
{
168-
Sass_Value* v = (Sass_Value*) calloc(1, sizeof(Sass_Value));
168+
union Sass_Value* v = (Sass_Value*) calloc(1, sizeof(Sass_Value));
169169
if (v == 0) return 0;
170170
v->number.tag = SASS_NUMBER;
171171
v->number.value = val;
@@ -176,7 +176,7 @@ extern "C" {
176176

177177
union Sass_Value* ADDCALL sass_make_color(double r, double g, double b, double a)
178178
{
179-
Sass_Value* v = (Sass_Value*) calloc(1, sizeof(Sass_Value));
179+
union Sass_Value* v = (Sass_Value*) calloc(1, sizeof(Sass_Value));
180180
if (v == 0) return 0;
181181
v->color.tag = SASS_COLOR;
182182
v->color.r = r;
@@ -188,7 +188,7 @@ extern "C" {
188188

189189
union Sass_Value* ADDCALL sass_make_string(const char* val)
190190
{
191-
Sass_Value* v = (Sass_Value*) calloc(1, sizeof(Sass_Value));
191+
union Sass_Value* v = (Sass_Value*) calloc(1, sizeof(Sass_Value));
192192
if (v == 0) return 0;
193193
v->string.quoted = false;
194194
v->string.tag = SASS_STRING;
@@ -199,7 +199,7 @@ extern "C" {
199199

200200
union Sass_Value* ADDCALL sass_make_qstring(const char* val)
201201
{
202-
Sass_Value* v = (Sass_Value*) calloc(1, sizeof(Sass_Value));
202+
union Sass_Value* v = (Sass_Value*) calloc(1, sizeof(Sass_Value));
203203
if (v == 0) return 0;
204204
v->string.quoted = true;
205205
v->string.tag = SASS_STRING;
@@ -210,7 +210,7 @@ extern "C" {
210210

211211
union Sass_Value* ADDCALL sass_make_list(size_t len, enum Sass_Separator sep)
212212
{
213-
Sass_Value* v = (Sass_Value*) calloc(1, sizeof(Sass_Value));
213+
union Sass_Value* v = (Sass_Value*) calloc(1, sizeof(Sass_Value));
214214
if (v == 0) return 0;
215215
v->list.tag = SASS_LIST;
216216
v->list.length = len;
@@ -222,7 +222,7 @@ extern "C" {
222222

223223
union Sass_Value* ADDCALL sass_make_map(size_t len)
224224
{
225-
Sass_Value* v = (Sass_Value*) calloc(1, sizeof(Sass_Value));
225+
union Sass_Value* v = (Sass_Value*) calloc(1, sizeof(Sass_Value));
226226
if (v == 0) return 0;
227227
v->map.tag = SASS_MAP;
228228
v->map.length = len;
@@ -233,15 +233,15 @@ extern "C" {
233233

234234
union Sass_Value* ADDCALL sass_make_null(void)
235235
{
236-
Sass_Value* v = (Sass_Value*) calloc(1, sizeof(Sass_Value));
236+
union Sass_Value* v = (Sass_Value*) calloc(1, sizeof(Sass_Value));
237237
if (v == 0) return 0;
238238
v->null.tag = SASS_NULL;
239239
return v;
240240
}
241241

242242
union Sass_Value* ADDCALL sass_make_error(const char* msg)
243243
{
244-
Sass_Value* v = (Sass_Value*) calloc(1, sizeof(Sass_Value));
244+
union Sass_Value* v = (Sass_Value*) calloc(1, sizeof(Sass_Value));
245245
if (v == 0) return 0;
246246
v->error.tag = SASS_ERROR;
247247
v->error.message = msg ? sass_strdup(msg) : 0;
@@ -251,7 +251,7 @@ extern "C" {
251251

252252
union Sass_Value* ADDCALL sass_make_warning(const char* msg)
253253
{
254-
Sass_Value* v = (Sass_Value*) calloc(1, sizeof(Sass_Value));
254+
union Sass_Value* v = (Sass_Value*) calloc(1, sizeof(Sass_Value));
255255
if (v == 0) return 0;
256256
v->warning.tag = SASS_WARNING;
257257
v->warning.message = msg ? sass_strdup(msg) : 0;

to_c.cpp

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,19 @@
66
namespace Sass {
77
using namespace std;
88

9-
Sass_Value* To_C::fallback_impl(AST_Node* n)
9+
union Sass_Value* To_C::fallback_impl(AST_Node* n)
1010
{ return sass_make_null(); }
1111

12-
Sass_Value* To_C::operator()(Boolean* b)
12+
union Sass_Value* To_C::operator()(Boolean* b)
1313
{ return sass_make_boolean(b->value()); }
1414

15-
Sass_Value* To_C::operator()(Number* n)
15+
union Sass_Value* To_C::operator()(Number* n)
1616
{ return sass_make_number(n->value(), n->unit().c_str()); }
1717

18-
Sass_Value* To_C::operator()(Color* c)
18+
union Sass_Value* To_C::operator()(Color* c)
1919
{ return sass_make_color(c->r(), c->g(), c->b(), c->a()); }
2020

21-
Sass_Value* To_C::operator()(String_Constant* s)
21+
union Sass_Value* To_C::operator()(String_Constant* s)
2222
{
2323
if (s->quote_mark()) {
2424
return sass_make_qstring(s->value().c_str());
@@ -27,21 +27,21 @@ namespace Sass {
2727
}
2828
}
2929

30-
Sass_Value* To_C::operator()(String_Quoted* s)
30+
union Sass_Value* To_C::operator()(String_Quoted* s)
3131
{ return sass_make_qstring(s->value().c_str()); }
3232

33-
Sass_Value* To_C::operator()(List* l)
33+
union Sass_Value* To_C::operator()(List* l)
3434
{
35-
Sass_Value* v = sass_make_list(l->length(), l->separator());
35+
union Sass_Value* v = sass_make_list(l->length(), l->separator());
3636
for (size_t i = 0, L = l->length(); i < L; ++i) {
3737
sass_list_set_value(v, i, (*l)[i]->perform(this));
3838
}
3939
return v;
4040
}
4141

42-
Sass_Value* To_C::operator()(Map* m)
42+
union Sass_Value* To_C::operator()(Map* m)
4343
{
44-
Sass_Value* v = sass_make_map(m->length());
44+
union Sass_Value* v = sass_make_map(m->length());
4545
int i = 0;
4646
for (auto key : m->keys()) {
4747
sass_map_set_key(v, i, key->perform(this));
@@ -51,20 +51,20 @@ namespace Sass {
5151
return v;
5252
}
5353

54-
Sass_Value* To_C::operator()(Arguments* a)
54+
union Sass_Value* To_C::operator()(Arguments* a)
5555
{
56-
Sass_Value* v = sass_make_list(a->length(), SASS_COMMA);
56+
union Sass_Value* v = sass_make_list(a->length(), SASS_COMMA);
5757
for (size_t i = 0, L = a->length(); i < L; ++i) {
5858
sass_list_set_value(v, i, (*a)[i]->perform(this));
5959
}
6060
return v;
6161
}
6262

63-
Sass_Value* To_C::operator()(Argument* a)
63+
union Sass_Value* To_C::operator()(Argument* a)
6464
{ return a->value()->perform(this); }
6565

6666
// not strictly necessary because of the fallback
67-
Sass_Value* To_C::operator()(Null* n)
67+
union Sass_Value* To_C::operator()(Null* n)
6868
{ return sass_make_null(); }
6969

7070
};

to_c.hpp

Lines changed: 17 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,34 @@
11
#ifndef SASS_TO_C_H
22
#define SASS_TO_C_H
33

4+
#include "ast_fwd_decl.hpp"
45
#include "operation.hpp"
56
#include "sass_values.h"
67

78
namespace Sass {
89
using namespace std;
910

10-
class AST_Node;
11-
class Boolean;
12-
class Number;
13-
class String_Constant;
14-
class List;
15-
class Map;
16-
class Null;
17-
18-
class To_C : public Operation_CRTP<Sass_Value*, To_C> {
19-
20-
Sass_Value* fallback_impl(AST_Node* n);
11+
class To_C : public Operation_CRTP<union Sass_Value*, To_C> {
12+
// import all the class-specific methods and override as desired
13+
using Operation<union Sass_Value*>::operator();
14+
// override this to define a catch-all
15+
union Sass_Value* fallback_impl(AST_Node* n);
2116

2217
public:
2318

2419
To_C() { }
2520
virtual ~To_C() { }
26-
using Operation<Sass_Value*>::operator();
27-
28-
Sass_Value* operator()(Boolean*);
29-
Sass_Value* operator()(Number*);
30-
Sass_Value* operator()(Color*);
31-
Sass_Value* operator()(String_Constant*);
32-
Sass_Value* operator()(String_Quoted*);
33-
Sass_Value* operator()(List*);
34-
Sass_Value* operator()(Map*);
35-
Sass_Value* operator()(Null*);
36-
Sass_Value* operator()(Arguments*);
37-
Sass_Value* operator()(Argument*);
21+
22+
union Sass_Value* operator()(Boolean*);
23+
union Sass_Value* operator()(Number*);
24+
union Sass_Value* operator()(Color*);
25+
union Sass_Value* operator()(String_Constant*);
26+
union Sass_Value* operator()(String_Quoted*);
27+
union Sass_Value* operator()(List*);
28+
union Sass_Value* operator()(Map*);
29+
union Sass_Value* operator()(Null*);
30+
union Sass_Value* operator()(Arguments*);
31+
union Sass_Value* operator()(Argument*);
3832

3933
template <typename U>
4034
Sass_Value* fallback(U x) { return fallback_impl(x); }

to_string.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ namespace Sass {
2121
bool in_declaration;
2222

2323
public:
24+
2425
To_String(Context* ctx = 0, bool in_declaration = true);
2526
virtual ~To_String();
2627

0 commit comments

Comments
 (0)