Fix generation of proc table
There was an error in a CL that added new procs.
https://ci.chromium.org/ui/p/chromium/builders/try/dawn-try-linux-tsan-rel/177/overview
The addition of new procs exceeded the nested parenthesis limit.
Fix it by not using nested expressions to generate the proc table.
Change-Id: I21b3d8977bfbd2f910a3600e16a47d06e722814e
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/180880
Commit-Queue: Austin Eng <enga@chromium.org>
Reviewed-by: Loko Kung <lokokung@google.com>
diff --git a/generator/templates/dawn/native/ProcTable.cpp b/generator/templates/dawn/native/ProcTable.cpp
index c3ac507..dcc7370 100644
--- a/generator/templates/dawn/native/ProcTable.cpp
+++ b/generator/templates/dawn/native/ProcTable.cpp
@@ -192,27 +192,20 @@
return result;
}
-
- template <typename... MemberPtrPairs>
- constexpr {{Prefix}}ProcTable MakeProcTable(int, MemberPtrPairs... pairs) {
+ constexpr {{Prefix}}ProcTable MakeProcTable() {
{{Prefix}}ProcTable procs = {};
- ([&](auto& pair){
- procs.*(pair.first) = pair.second;
- }(pairs), ...);
- return procs;
- }
-
- static {{Prefix}}ProcTable gProcTable = MakeProcTable(
- /* unused */ 0
{% for function in by_category["function"] %}
- , std::make_pair(&{{Prefix}}ProcTable::{{as_varName(function.name)}}, Native{{as_cppType(function.name)}})
+ procs.{{as_varName(function.name)}} = Native{{as_cppType(function.name)}};
{% endfor %}
{% for type in by_category["object"] %}
{% for method in c_methods(type) %}
- , std::make_pair(&{{Prefix}}ProcTable::{{as_varName(type.name, method.name)}}, Native{{as_MethodSuffix(type.name, method.name)}})
+ procs.{{as_varName(type.name, method.name)}} = Native{{as_MethodSuffix(type.name, method.name)}};
{% endfor %}
{% endfor %}
- );
+ return procs;
+ }
+
+ static {{Prefix}}ProcTable gProcTable = MakeProcTable();
const {{Prefix}}ProcTable& GetProcsAutogen() {
return gProcTable;
diff --git a/generator/templates/dawn/wire/client/ApiProcs.cpp b/generator/templates/dawn/wire/client/ApiProcs.cpp
index 3830d73..e4d1dd7 100644
--- a/generator/templates/dawn/wire/client/ApiProcs.cpp
+++ b/generator/templates/dawn/wire/client/ApiProcs.cpp
@@ -180,26 +180,20 @@
{% set Prefix = metadata.proc_table_prefix %}
- template <typename... MemberPtrPairs>
- constexpr {{Prefix}}ProcTable MakeProcTable(int, MemberPtrPairs... pairs) {
+ constexpr {{Prefix}}ProcTable MakeProcTable() {
{{Prefix}}ProcTable procs = {};
- ([&](auto& pair){
- procs.*(pair.first) = pair.second;
- }(pairs), ...);
- return procs;
- }
-
- static {{Prefix}}ProcTable gProcTable = MakeProcTable(
- /* unused */ 0
{% for function in by_category["function"] %}
- , std::make_pair(&{{Prefix}}ProcTable::{{as_varName(function.name)}}, Client{{as_cppType(function.name)}})
+ procs.{{as_varName(function.name)}} = Client{{as_cppType(function.name)}};
{% endfor %}
{% for type in by_category["object"] %}
{% for method in c_methods(type) %}
- , std::make_pair(&{{Prefix}}ProcTable::{{as_varName(type.name, method.name)}}, Client{{as_MethodSuffix(type.name, method.name)}})
+ procs.{{as_varName(type.name, method.name)}} = Client{{as_MethodSuffix(type.name, method.name)}};
{% endfor %}
{% endfor %}
- );
+ return procs;
+ }
+
+ static {{Prefix}}ProcTable gProcTable = MakeProcTable();
const {{Prefix}}ProcTable& GetProcs() {
return gProcTable;