Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Disambiguate type names in cluster-objects initializers. #13744

Merged

Conversation

bzbarsky-apple
Copy link
Contributor

In most places, where we are assigning to something of type {{zapTypeToDecodableClusterObjectType type}} to start with, what we had was not a problem.

But in the DecodableType for the cluster-wide struct, which is inside
namespace chip::app::Clusters::ClusterName::Attributes, we could get
an ambiguity when an attribute and an enum had the same name
(e.g. HourFormat). Then the bareword HourFormat instead of being
treated as ClusterName::HourFormat would get treated as
ClusterName::Attributes::HourFormat, which is a namespace, not a type
name, and after that things would fail to compile.

The fix is to, at this one callsite, pass in the cluster name as the
namespace, so we generate fully qualified names for enums.

Problem

See above.

Change overview

See above.

Testing

Ensured that I can compile with the HourFormat attribute defined to be of HourFormat type.

In most places, where we are assigning to something of type {{zapTypeToDecodableClusterObjectType type}} to start with, what we had was not a problem.

But in the DecodableType for the cluster-wide struct, which is inside
namespace chip::app::Clusters::ClusterName::Attributes, we could get
an ambiguity when an attribute and an enum had the same name
(e.g. HourFormat).  Then the bareword HourFormat instead of being
treated as ClusterName::HourFormat would get treated as
ClusterName::Attributes::HourFormat, which is a namespace, not a type
name, and after that things would fail to compile.

The fix is to, at this one callsite, pass in the cluster name as the
namespace, so we generate fully qualified names for enums.
@github-actions
Copy link

github-actions bot commented Jan 20, 2022

PR #13744: Size comparison from 3853608 to e26897d

Full report (32 builds for efr32, esp32, k32w, linux, mbed, nrfconnect, p6, qpg, telink)
platform target config section 3853608 e26897d change % change
efr32 lighting-app BRD4161A (read only) 834948 834948 0 0.0
(read/write) 127640 127640 0 0.0
.bss 125744 125744 0 0.0
.data 1896 1896 0 0.0
.text 834940 834940 0 0.0
BRD4161A+rpc (read only) 822352 822352 0 0.0
(read/write) 144304 144304 0 0.0
.bss 142304 142304 0 0.0
.data 1996 1996 0 0.0
.text 822344 822344 0 0.0
window-app BRD4161A (read only) 805536 805536 0 0.0
(read/write) 126328 126328 0 0.0
.bss 124480 124480 0 0.0
.data 1848 1848 0 0.0
.text 805528 805528 0 0.0
esp32 all-clusters-app c3devkit (read only) 912576 912576 0 0.0
(read/write) 1316658 1316658 0 0.0
.dram0.bss 70568 70568 0 0.0
.dram0.data 14244 14244 0 0.0
.flash.rodata 178344 178344 0 0.0
.flash.text 912576 912576 0 0.0
.iram0.text 62056 62056 0 0.0
m5stack (read only) 961391 961391 0 0.0
(read/write) 448800 448800 0 0.0
.dram0.bss 75024 75024 0 0.0
.dram0.data 34032 34032 0 0.0
.flash.rodata 207616 207616 0 0.0
.flash.text 956007 956007 0 0.0
.iram0.text 123399 123399 0 0.0
k32w light k32w061+release (read/write) 659096 659096 0 0.0
.bss 77136 77136 0 0.0
.data 1864 1864 0 0.0
.text 574296 574296 0 0.0
lock k32w061+release (read/write) 661860 661860 0 0.0
.bss 77432 77432 0 0.0
.data 1884 1884 0 0.0
.text 576744 576744 0 0.0
linux chip-tool-ipv6only arm64 (read only) 8144124 8144124 0 0.0
(read/write) 374513 374513 0 0.0
.bss 55345 55345 0 0.0
.data 1128 1128 0 0.0
.data.rel.ro 248800 248800 0 0.0
.dynamic 560 560 0 0.0
.got 65520 65520 0 0.0
.init 24 24 0 0.0
.init_array 184 184 0 0.0
.rodata 422724 422724 0 0.0
.text 6923108 6923108 0 0.0
thermostat-no-ble arm64 (read only) 2044108 2044108 0 0.0
(read/write) 145921 145921 0 0.0
.bss 65089 65089 0 0.0
.data 904 904 0 0.0
.data.rel.ro 72952 72952 0 0.0
.dynamic 560 560 0 0.0
.got 4040 4040 0 0.0
.init 24 24 0 0.0
.init_array 304 304 0 0.0
.rodata 129916 129916 0 0.0
.text 1699792 1699792 0 0.0
mbed all-clusters-app CY8CPROTO_062_4343W+release (read only) 6224 6224 0 0.0
(read/write) 2350304 2350304 0 0.0
.bss 189260 189260 0 0.0
.data 5296 5296 0 0.0
.text 1312880 1312880 0 0.0
lighting-app CY8CPROTO_062_4343W+release (read only) 6224 6224 0 0.0
(read/write) 2334568 2334568 0 0.0
.bss 180760 180760 0 0.0
.data 5576 5576 0 0.0
.text 1297168 1297168 0 0.0
lock-app CY8CPROTO_062_4343W+release (read only) 6224 6224 0 0.0
(read/write) 2304920 2304920 0 0.0
.bss 179768 179768 0 0.0
.data 5552 5552 0 0.0
.text 1267520 1267520 0 0.0
pigweed-app CY8CPROTO_062_4343W+release (read only) 6224 6224 0 0.0
(read/write) 1139712 1139712 0 0.0
.bss 11756 11756 0 0.0
.data 4368 4368 0 0.0
.text 103096 103096 0 0.0
shell CY8CPROTO_062_4343W+release (read only) 6224 6224 0 0.0
(read/write) 2054256 2054256 0 0.0
.bss 156876 156876 0 0.0
.data 4864 4864 0 0.0
.text 1016856 1016856 0 0.0
nrfconnect lighting-app nrf52840dk_nrf52840 (read/write) 943427 943427 0 0.0
bss 119628 119628 0 0.0
rodata 108760 108760 0 0.0
text 637456 637456 0 0.0
nrf52840dk_nrf52840+rpc (read/write) 928911 928911 0 0.0
bss 116672 116672 0 0.0
rodata 101212 101212 0 0.0
text 632848 632848 0 0.0
nrf52840dongle_nrf52840 (read/write) 994107 994107 0 0.0
bss 122472 122472 0 0.0
rodata 113516 113516 0 0.0
text 669652 669652 0 0.0
nrf5340dk_nrf5340_cpuapp (read/write) 853254 853254 0 0.0
bss 116416 116416 0 0.0
rodata 101936 101936 0 0.0
text 554376 554376 0 0.0
lock-app nrf52840dk_nrf52840 (read/write) 912787 912787 0 0.0
bss 118784 118784 0 0.0
rodata 103728 103728 0 0.0
text 612904 612904 0 0.0
nrf5340dk_nrf5340_cpuapp (read/write) 822858 822858 0 0.0
bss 115600 115600 0 0.0
rodata 96956 96956 0 0.0
text 529860 529860 0 0.0
pigweed-app nrf52840dk_nrf52840 (read/write) 541835 541835 0 0.0
bss 52588 52588 0 0.0
rodata 50104 50104 0 0.0
text 376940 376940 0 0.0
pump-app nrf52840dk_nrf52840 (read/write) 915647 915647 0 0.0
bss 118548 118548 0 0.0
rodata 104092 104092 0 0.0
text 615552 615552 0 0.0
pump-controller-app nrf52840dk_nrf52840 (read/write) 910723 910723 0 0.0
bss 118572 118572 0 0.0
rodata 103200 103200 0 0.0
text 611480 611480 0 0.0
shell nrf52840dk_nrf52840 (read/write) 798479 798479 0 0.0
bss 109776 109776 0 0.0
rodata 78324 78324 0 0.0
text 533872 533872 0 0.0
nrf5340dk_nrf5340_cpuapp (read/write) 711278 711278 0 0.0
bss 107664 107664 0 0.0
rodata 72624 72624 0 0.0
text 451548 451548 0 0.0
p6 all-clusters-app default (read/write) 2405904 2405904 0 0.0
.bss 117596 117596 0 0.0
.data 2568 2568 0 0.0
.text 1364168 1364168 0 0.0
light-app default (read/write) 2330040 2330040 0 0.0
.bss 106128 106128 0 0.0
.data 2408 2408 0 0.0
.text 1288304 1288304 0 0.0
lock-app default (read/write) 2299048 2299048 0 0.0
.bss 104976 104976 0 0.0
.data 2352 2352 0 0.0
.text 1257312 1257312 0 0.0
qpg lighting-app qpg6105+debug (read only) 565136 565136 0 0.0
(read/write) 146936 146936 0 0.0
.bss 89960 89960 0 0.0
.data 1060 1060 0 0.0
.text 559816 559816 0 0.0
lock-app qpg6105+debug (read only) 515548 515548 0 0.0
(read/write) 146940 146940 0 0.0
.bss 88584 88584 0 0.0
.data 984 984 0 0.0
.text 510228 510228 0 0.0
persistent-storage-app qpg6105+debug (read only) 106848 106848 0 0.0
(read/write) 146940 146940 0 0.0
.bss 38512 38512 0 0.0
.data 288 288 0 0.0
.text 101528 101528 0 0.0
telink lighting-app tlsr9518adk80d (read/write) 840794 840794 0 0.0
bss 87316 87316 0 0.0
noinit 37160 37160 0 0.0
text 587820 587820 0 0.0

@yufengwangca yufengwangca merged commit c750f4b into project-chip:master Jan 20, 2022
@bzbarsky-apple bzbarsky-apple deleted the cluster-object-ambiguous branch January 20, 2022 20:28
selissia pushed a commit to selissia/connectedhomeip that referenced this pull request Jan 28, 2022
…p#13744)

In most places, where we are assigning to something of type {{zapTypeToDecodableClusterObjectType type}} to start with, what we had was not a problem.

But in the DecodableType for the cluster-wide struct, which is inside
namespace chip::app::Clusters::ClusterName::Attributes, we could get
an ambiguity when an attribute and an enum had the same name
(e.g. HourFormat).  Then the bareword HourFormat instead of being
treated as ClusterName::HourFormat would get treated as
ClusterName::Attributes::HourFormat, which is a namespace, not a type
name, and after that things would fail to compile.

The fix is to, at this one callsite, pass in the cluster name as the
namespace, so we generate fully qualified names for enums.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants