Skip to content

Commit

Permalink
-O gen-C++ fix for run-time warnings for "when" lambdas
Browse files Browse the repository at this point in the history
  • Loading branch information
vpax authored and ckreibich committed Sep 27, 2024
1 parent d1c3192 commit 5c38f76
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 1 deletion.
2 changes: 2 additions & 0 deletions src/script_opt/CPP/InitsInfo.cc
Original file line number Diff line number Diff line change
Expand Up @@ -511,6 +511,7 @@ FuncTypeInfo::FuncTypeInfo(CPPCompile* _c, TypePtr _t) : AbstractTypeInfo(_c, st
flavor = f->Flavor();
params = f->Params();
yield = f->Yield();
expressionless_return_okay = f->ExpressionlessReturnOkay();

auto gi = c->RegisterType(params);
if ( gi )
Expand All @@ -527,6 +528,7 @@ void FuncTypeInfo::AddInitializerVals(std::vector<std::string>& ivs) const {
ivs.emplace_back(Fmt(c->TypeOffset(params)));
ivs.emplace_back(Fmt(yield ? c->TypeOffset(yield) : -1));
ivs.emplace_back(Fmt(static_cast<int>(flavor)));
ivs.emplace_back(Fmt(static_cast<int>(expressionless_return_okay)));
}

RecordTypeInfo::RecordTypeInfo(CPPCompile* _c, TypePtr _t) : AbstractTypeInfo(_c, std::move(_t)) {
Expand Down
1 change: 1 addition & 0 deletions src/script_opt/CPP/InitsInfo.h
Original file line number Diff line number Diff line change
Expand Up @@ -624,6 +624,7 @@ class FuncTypeInfo : public AbstractTypeInfo {
FunctionFlavor flavor;
RecordTypePtr params;
TypePtr yield;
bool expressionless_return_okay;
};

class RecordTypeInfo : public AbstractTypeInfo {
Expand Down
5 changes: 4 additions & 1 deletion src/script_opt/CPP/RuntimeInits.cc
Original file line number Diff line number Diff line change
Expand Up @@ -357,6 +357,7 @@ TypePtr CPP_TypeInits::BuildFuncType(InitsManager* im, ValElemVec& init_vals) co
auto p = cast_intrusive<RecordType>(im->Types(init_vals[1]));
auto yield_i = init_vals[2];
auto flavor = static_cast<FunctionFlavor>(init_vals[3]);
auto expressionless_return_okay = static_cast<FunctionFlavor>(init_vals[4]);

TypePtr y;

Expand All @@ -366,7 +367,9 @@ TypePtr CPP_TypeInits::BuildFuncType(InitsManager* im, ValElemVec& init_vals) co
else if ( flavor == FUNC_FLAVOR_FUNCTION || flavor == FUNC_FLAVOR_HOOK )
y = base_type(TYPE_VOID);

return make_intrusive<FuncType>(p, y, flavor);
auto ft = make_intrusive<FuncType>(p, y, flavor);
ft->SetExpressionlessReturnOkay(expressionless_return_okay);
return ft;
}

TypePtr CPP_TypeInits::BuildRecordType(InitsManager* im, ValElemVec& init_vals, int offset) const {
Expand Down

0 comments on commit 5c38f76

Please sign in to comment.