[fid] Improve dangerous_identifiers generation
Makes a new Python module with both the logic from generate.py and
configuration from dangerous_identifiers.txt. Using a higher-level
langauge to specify configuration makes it simpler to extend so now the
uint32 handling specified in the configuration rather than in ad-hoc
code.
The only changes to the generated code are a comment change reflecting
the new name of the generation script, a couple of cases where uint32
was accidentally included before, and some places where table members
were being generated out of order.
Change-Id: I363266fbf35ae5af81c60064c496f7b267934318
Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/438057
Commit-Queue: Ian McKellar <ianloic@google.com>
Reviewed-by: Benjamin Prosnitz <bprosnitz@google.com>
Reviewed-by: Pascal Perez <pascallouis@google.com>
Testability-Review: Benjamin Prosnitz <bprosnitz@google.com>
Testability-Review: Pascal Perez <pascallouis@google.com>
diff --git a/docs/contribute/contributing-to-fidl/README.md b/docs/contribute/contributing-to-fidl/README.md
index dc2607a..43ae787 100644
--- a/docs/contribute/contributing-to-fidl/README.md
+++ b/docs/contribute/contributing-to-fidl/README.md
@@ -470,7 +470,7 @@
| fidlc goldens | fx exec $FUCHSIA_DIR/zircon/tools/fidl/testdata/regen.sh | zircon/tools/fidl/testdata | zircon/tools/fidl/goldens |
| fidlgen goldens | fx exec $FUCHSIA_DIR/garnet/go/src/fidl/compiler/backend/typestest/regen.sh | zircon/tools/fidl/goldens | garnet/go/src/fidl/compiler/backend/goldens |
| dart fidlgen goldens | fx exec $FUCHSIA_DIR/topaz/bin/fidlgen_dart/regen.sh | zircon/tools/fidl/goldens | topaz/bin/fidlgen_dart/goldens |
-| dangerous identifiers | fx exec src/tests/fidl/dangerous_identifiers/generate.py | src/tests/fidl/dangerous_identifiers/dangerous_identifiers.txt | src/tests/fidl/dangerous_identifiers/{cpp, fidl} |
+| dangerous identifiers | fx exec src/tests/fidl/dangerous_identifiers/generate.sh | src/tests/fidl/dangerous_identifiers/generate/*.py | src/tests/fidl/dangerous_identifiers/{cpp, fidl} |
| regen third party go | fx exec $FUCHSIA_DIR/third_party/go/regen-fidl | | |
| fidldoc goldens | REGENERATE_GOLDENS_FOLDER=$FUCHSIA_DIR/tools/fidl/fidldoc/src/templates/markdown/testdata fx test host_x64/fidldoc_bin_test -- golden_test | zircon/tools/fidl/goldens | tools/fidl/fidldoc/src/templates/markdown/testdata |
diff --git a/src/tests/fidl/dangerous_identifiers/README.md b/src/tests/fidl/dangerous_identifiers/README.md
index 869cbd1..85e4bd6 100644
--- a/src/tests/fidl/dangerous_identifiers/README.md
+++ b/src/tests/fidl/dangerous_identifiers/README.md
@@ -1,10 +1,13 @@
# FIDL Dangerous Identifiers Tests
-The script `generate.py` reads a list of lower\_camel\_case formatted list of
-identifiers from `dangerous_identifiers.txt`. Those are identifiers that we
-suspect could trigger edge cases in the FIDL compilers, binding generators and
-libraries.
+The script in `generate` takes a list of lower\_camel\_case identifiers
+(in [generate/identifiers.py](generate/identifiers.py)) formats them in a
+variety of styles (from [generate/styles.py](generate/styles.py)) and then
+uses them in a variety of FIDL contexts (defined in
+[generate/uses.py](generate/uses.py)).
-The `generate.py` tool generates FIDL libraries that use various forms of each
-identifier in various places that identifiers can appear. It generates a C++
-program that compiles (though does not use) every generated FIDL library.
+This results in FIDL [libraries](fidl) using these identifiers in many
+different ways and build rules for Rust and C++ that build them. These are
+used to verify that FIDL generators generate valid source even when presented
+with problematic identifiers from FIDL.
+
diff --git a/src/tests/fidl/dangerous_identifiers/cpp/BUILD.gn b/src/tests/fidl/dangerous_identifiers/cpp/BUILD.gn
index 1cafbf0..d684c8a 100644
--- a/src/tests/fidl/dangerous_identifiers/cpp/BUILD.gn
+++ b/src/tests/fidl/dangerous_identifiers/cpp/BUILD.gn
@@ -1,7 +1,7 @@
# Copyright 2019 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
-# Generated by generate.py.
+# Generated by //src/tests/fidl/dangerous_identifiers/generate.
source_set("fidl.test.dangerous.constants.lower_cpp") {
output_name =
"cpp_fidl_dangerous_identifiers_test_fidl.test.dangerous.constants.lower"
diff --git a/src/tests/fidl/dangerous_identifiers/dangerous_identifiers.txt b/src/tests/fidl/dangerous_identifiers/dangerous_identifiers.txt
deleted file mode 100644
index 297ed30..0000000
--- a/src/tests/fidl/dangerous_identifiers/dangerous_identifiers.txt
+++ /dev/null
@@ -1,233 +0,0 @@
-# These are keywords used in languages we support and in generated bindings.
-# This list is maintained by hand and should be expanded to cover as many cases
-# as we can think of.
-#
-# Each line is either:
-# - a comment prefixed with # or
-# - a lower_camel_case identifier, a colon, and a unique numerical tag
-# optionally, a BindingsDenylist mention can be added
-#
-# Examples:
-# coding_traits:32
-# unknown_data:218 BindingsDenylist=dart
-#
-# Note: last tag used is 218
-abstract:1
-alignas:2
-alignof:3
-and:4
-and_eq:5
-as:6
-asm:7
-assert:8
-async:9
-atomic_cancel:10
-atomic_commit:11
-atomic_noexcept:12
-auto:13
-await:14
-become:15
-bitand:16
-bitor:17
-bool:18
-box:19
-break:20
-byte:21
-bytes:215
-case:22
-catch:23
-chan:24
-char:25
-char16_t:26
-char32_t:27
-class:28
-co_await:29
-co_return:30
-co_yield:31
-coding_traits:32
-compl:33
-concept:34
-const:35
-const_cast:36
-constexpr:37
-continue:38
-controller:39
-covariant:40
-crate:41
-decltype:42
-decoder:43
-default:44
-defer:45
-deferred:46
-delete:47
-do:48
-double:49
-dynamic:50
-dynamic_cast:51
-else:52
-encoder:53
-ensure_values_instantiated:54
-enum:55
-empty:56
-err:57
-explicit:58
-export:59
-extends:60
-extern:61
-external:62
-factory:63
-fallthrough:64
-false:65
-fidl:66
-fidl_type:67
-final:68
-finally:69
-float:70
-fn:71
-for:72
-friend:73
-func:74
-future:75
-futures:76
-get:77
-go:78
-goto:79
-has_invalid_tag:80
-hash_code:81
-if:82
-impl:83
-implements:84
-import:85
-in:86
-index:87
-inline:88
-int:89
-int16:90
-int32:91
-int64:92
-int8:93
-interface:94
-internal_tag:95
-is:96
-let:97
-lhs:98
-library:99
-list:100
-long:101
-loop:102
-macro:103
-map:104
-match:105
-mixin:106
-mod:107
-module:108
-move:109
-mut:110
-mutable:111
-namespace:112
-never:113
-new:114
-no_such_method:115
-noexcept:116
-none:117
-not:118
-not_eq:119
-null:120
-nullptr:121
-num:122
-object:123
-offset:124
-offsetof:125
-ok:126
-on_open:127
-operator:128
-option:129
-or:130
-or_eq:131
-override:132
-package:133
-part:134
-priv:135
-private:136
-proc:137
-protected:138
-proxy:139
-pub:140
-public:141
-pure:142
-range:143
-ref:144
-register:145
-reinterpret_cast:146
-requires:147
-result:148
-rethrow:149
-return:150
-rhs:151
-rune:152
-runtime_type:153
-select:154
-self:155
-send:156
-set:157
-set_controller:158
-short:159
-signed:160
-sizeof:161
-some:162
-static:163
-static_assert:164
-static_cast:165
-stream:166
-string:167
-struct:168
-stub:169
-super:170
-switch:171
-synchronized:172
-template:173
-this:174
-thread_local:175
-throw:176
-to_string:177
-trait:178
-true:179
-try:180
-type:181
-typedef:182
-typeid:183
-typename:184
-typeof:185
-uint16:186
-uint32:187
-uint64:188
-uint8:189
-union:190
-unknown:216
-unknown_bytes:217
-# TODO(fxb/60495): Remedy identifier clashes.
-unknown_data:218 BindingsDenylist=dart
-unsafe:191
-unsigned:192
-unsized:193
-use:194
-using:195
-value:196
-value_of:197
-value_union:198
-values_map:199
-var:200
-vec:201
-virtual:202
-void:203
-volatile:204
-wchar_t:205
-where:206
-which:207
-while:208
-with:209
-xor:210
-xor_eq:211
-xunion:212
-yield:213
-zx:214
diff --git a/src/tests/fidl/dangerous_identifiers/fidl/BUILD.gn b/src/tests/fidl/dangerous_identifiers/fidl/BUILD.gn
index fc90520..3c77667 100644
--- a/src/tests/fidl/dangerous_identifiers/fidl/BUILD.gn
+++ b/src/tests/fidl/dangerous_identifiers/fidl/BUILD.gn
@@ -1,7 +1,7 @@
# Copyright 2019 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
-# Generated by generate.py.
+# Generated by //src/tests/fidl/dangerous_identifiers/generate.
import("//build/fidl/fidl.gni")
group("fidl") {
diff --git a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.constants.camel.test.fidl b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.constants.camel.test.fidl
index 7115d74..247486e 100644
--- a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.constants.camel.test.fidl
+++ b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.constants.camel.test.fidl
@@ -1,7 +1,7 @@
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Generated by generate.py.
+// Generated by //src/tests/fidl/dangerous_identifiers/generate.
library fidl.test.dangerous.constants.camel;
const uint32 Abstract = 1;
const uint32 Alignas = 1;
diff --git a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.constants.lower.test.fidl b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.constants.lower.test.fidl
index 5993016..29370c0 100644
--- a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.constants.lower.test.fidl
+++ b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.constants.lower.test.fidl
@@ -1,7 +1,7 @@
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Generated by generate.py.
+// Generated by //src/tests/fidl/dangerous_identifiers/generate.
library fidl.test.dangerous.constants.lower;
const uint32 abstract = 1;
const uint32 alignas = 1;
diff --git a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.constants.upper.test.fidl b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.constants.upper.test.fidl
index 52717ae..e7d4fe5 100644
--- a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.constants.upper.test.fidl
+++ b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.constants.upper.test.fidl
@@ -1,7 +1,7 @@
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Generated by generate.py.
+// Generated by //src/tests/fidl/dangerous_identifiers/generate.
library fidl.test.dangerous.constants.upper;
const uint32 ABSTRACT = 1;
const uint32 ALIGNAS = 1;
diff --git a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.enums.camel.test.fidl b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.enums.camel.test.fidl
index 9d56061..1f501d9 100644
--- a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.enums.camel.test.fidl
+++ b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.enums.camel.test.fidl
@@ -1,7 +1,7 @@
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Generated by generate.py.
+// Generated by //src/tests/fidl/dangerous_identifiers/generate.
library fidl.test.dangerous.enums.camel;
enum Abstract {
diff --git a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.enums.lower.test.fidl b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.enums.lower.test.fidl
index f4ff223..bf9d816 100644
--- a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.enums.lower.test.fidl
+++ b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.enums.lower.test.fidl
@@ -1,7 +1,7 @@
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Generated by generate.py.
+// Generated by //src/tests/fidl/dangerous_identifiers/generate.
library fidl.test.dangerous.enums.lower;
enum abstract {
diff --git a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.enums.upper.test.fidl b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.enums.upper.test.fidl
index ec0bd9d..10ee5ba 100644
--- a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.enums.upper.test.fidl
+++ b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.enums.upper.test.fidl
@@ -1,7 +1,7 @@
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Generated by generate.py.
+// Generated by //src/tests/fidl/dangerous_identifiers/generate.
library fidl.test.dangerous.enums.upper;
enum ABSTRACT {
diff --git a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.event.names.camel.test.fidl b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.event.names.camel.test.fidl
index c14e3fd..7b624bc 100644
--- a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.event.names.camel.test.fidl
+++ b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.event.names.camel.test.fidl
@@ -1,7 +1,7 @@
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Generated by generate.py.
+// Generated by //src/tests/fidl/dangerous_identifiers/generate.
library fidl.test.dangerous.event.names.camel;
protocol DangerousEvents {
diff --git a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.event.names.lower.test.fidl b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.event.names.lower.test.fidl
index 9e6eaa5..d7382ad 100644
--- a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.event.names.lower.test.fidl
+++ b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.event.names.lower.test.fidl
@@ -1,7 +1,7 @@
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Generated by generate.py.
+// Generated by //src/tests/fidl/dangerous_identifiers/generate.
library fidl.test.dangerous.event.names.lower;
protocol DangerousEvents {
diff --git a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.event.names.upper.test.fidl b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.event.names.upper.test.fidl
index 7580b99..351c7e6 100644
--- a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.event.names.upper.test.fidl
+++ b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.event.names.upper.test.fidl
@@ -1,7 +1,7 @@
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Generated by generate.py.
+// Generated by //src/tests/fidl/dangerous_identifiers/generate.
library fidl.test.dangerous.event.names.upper;
protocol DangerousEvents {
diff --git a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.method.event.arguments.camel.test.fidl b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.method.event.arguments.camel.test.fidl
index e60093a..35ea3c7 100644
--- a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.method.event.arguments.camel.test.fidl
+++ b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.method.event.arguments.camel.test.fidl
@@ -1,7 +1,7 @@
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Generated by generate.py.
+// Generated by //src/tests/fidl/dangerous_identifiers/generate.
library fidl.test.dangerous.method.event.arguments.camel;
using argtype = uint32;
diff --git a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.method.event.arguments.lower.test.fidl b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.method.event.arguments.lower.test.fidl
index bfeae3b..2394b47 100644
--- a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.method.event.arguments.lower.test.fidl
+++ b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.method.event.arguments.lower.test.fidl
@@ -1,7 +1,7 @@
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Generated by generate.py.
+// Generated by //src/tests/fidl/dangerous_identifiers/generate.
library fidl.test.dangerous.method.event.arguments.lower;
using argtype = uint32;
diff --git a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.method.event.arguments.upper.test.fidl b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.method.event.arguments.upper.test.fidl
index 108babc..91ee00e 100644
--- a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.method.event.arguments.upper.test.fidl
+++ b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.method.event.arguments.upper.test.fidl
@@ -1,7 +1,7 @@
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Generated by generate.py.
+// Generated by //src/tests/fidl/dangerous_identifiers/generate.
library fidl.test.dangerous.method.event.arguments.upper;
using argtype = uint32;
diff --git a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.method.names.camel.test.fidl b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.method.names.camel.test.fidl
index 0a8522174..00e1c4a 100644
--- a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.method.names.camel.test.fidl
+++ b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.method.names.camel.test.fidl
@@ -1,7 +1,7 @@
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Generated by generate.py.
+// Generated by //src/tests/fidl/dangerous_identifiers/generate.
library fidl.test.dangerous.method.names.camel;
protocol DangerousMethods {
diff --git a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.method.names.lower.test.fidl b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.method.names.lower.test.fidl
index 4228d91..ec93e92 100644
--- a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.method.names.lower.test.fidl
+++ b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.method.names.lower.test.fidl
@@ -1,7 +1,7 @@
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Generated by generate.py.
+// Generated by //src/tests/fidl/dangerous_identifiers/generate.
library fidl.test.dangerous.method.names.lower;
protocol DangerousMethods {
diff --git a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.method.names.upper.test.fidl b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.method.names.upper.test.fidl
index 7c04b16..e1dfccf 100644
--- a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.method.names.upper.test.fidl
+++ b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.method.names.upper.test.fidl
@@ -1,7 +1,7 @@
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Generated by generate.py.
+// Generated by //src/tests/fidl/dangerous_identifiers/generate.
library fidl.test.dangerous.method.names.upper;
protocol DangerousMethods {
diff --git a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.method.request.arguments.camel.test.fidl b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.method.request.arguments.camel.test.fidl
index 988a616..345b602 100644
--- a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.method.request.arguments.camel.test.fidl
+++ b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.method.request.arguments.camel.test.fidl
@@ -1,7 +1,7 @@
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Generated by generate.py.
+// Generated by //src/tests/fidl/dangerous_identifiers/generate.
library fidl.test.dangerous.method.request.arguments.camel;
using argtype = uint32;
diff --git a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.method.request.arguments.lower.test.fidl b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.method.request.arguments.lower.test.fidl
index a6c305a..892f569 100644
--- a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.method.request.arguments.lower.test.fidl
+++ b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.method.request.arguments.lower.test.fidl
@@ -1,7 +1,7 @@
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Generated by generate.py.
+// Generated by //src/tests/fidl/dangerous_identifiers/generate.
library fidl.test.dangerous.method.request.arguments.lower;
using argtype = uint32;
diff --git a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.method.request.arguments.upper.test.fidl b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.method.request.arguments.upper.test.fidl
index 625ae83e1..e9a924ad 100644
--- a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.method.request.arguments.upper.test.fidl
+++ b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.method.request.arguments.upper.test.fidl
@@ -1,7 +1,7 @@
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Generated by generate.py.
+// Generated by //src/tests/fidl/dangerous_identifiers/generate.
library fidl.test.dangerous.method.request.arguments.upper;
using argtype = uint32;
diff --git a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.method.response.arguments.camel.test.fidl b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.method.response.arguments.camel.test.fidl
index 927a04c..5b9096e 100644
--- a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.method.response.arguments.camel.test.fidl
+++ b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.method.response.arguments.camel.test.fidl
@@ -1,7 +1,7 @@
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Generated by generate.py.
+// Generated by //src/tests/fidl/dangerous_identifiers/generate.
library fidl.test.dangerous.method.response.arguments.camel;
using argtype = uint32;
diff --git a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.method.response.arguments.lower.test.fidl b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.method.response.arguments.lower.test.fidl
index 86673fc..ea9a37e 100644
--- a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.method.response.arguments.lower.test.fidl
+++ b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.method.response.arguments.lower.test.fidl
@@ -1,7 +1,7 @@
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Generated by generate.py.
+// Generated by //src/tests/fidl/dangerous_identifiers/generate.
library fidl.test.dangerous.method.response.arguments.lower;
using argtype = uint32;
diff --git a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.method.response.arguments.upper.test.fidl b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.method.response.arguments.upper.test.fidl
index 5653fbbd..422173c 100644
--- a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.method.response.arguments.upper.test.fidl
+++ b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.method.response.arguments.upper.test.fidl
@@ -1,7 +1,7 @@
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Generated by generate.py.
+// Generated by //src/tests/fidl/dangerous_identifiers/generate.
library fidl.test.dangerous.method.response.arguments.upper;
using argtype = uint32;
diff --git a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.protocol.names.camel.test.fidl b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.protocol.names.camel.test.fidl
index e735a11..be6b211 100644
--- a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.protocol.names.camel.test.fidl
+++ b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.protocol.names.camel.test.fidl
@@ -1,7 +1,7 @@
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Generated by generate.py.
+// Generated by //src/tests/fidl/dangerous_identifiers/generate.
library fidl.test.dangerous.protocol.names.camel;
protocol Abstract {
diff --git a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.protocol.names.lower.test.fidl b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.protocol.names.lower.test.fidl
index c2bdb889..618810d 100644
--- a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.protocol.names.lower.test.fidl
+++ b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.protocol.names.lower.test.fidl
@@ -1,7 +1,7 @@
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Generated by generate.py.
+// Generated by //src/tests/fidl/dangerous_identifiers/generate.
library fidl.test.dangerous.protocol.names.lower;
protocol abstract {
diff --git a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.protocol.names.upper.test.fidl b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.protocol.names.upper.test.fidl
index f7a5763..c310165 100644
--- a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.protocol.names.upper.test.fidl
+++ b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.protocol.names.upper.test.fidl
@@ -1,7 +1,7 @@
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Generated by generate.py.
+// Generated by //src/tests/fidl/dangerous_identifiers/generate.
library fidl.test.dangerous.protocol.names.upper;
protocol ABSTRACT {
diff --git a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.struct.names.camel.test.fidl b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.struct.names.camel.test.fidl
index f0b6c62..7cd0319 100644
--- a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.struct.names.camel.test.fidl
+++ b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.struct.names.camel.test.fidl
@@ -1,7 +1,7 @@
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Generated by generate.py.
+// Generated by //src/tests/fidl/dangerous_identifiers/generate.
library fidl.test.dangerous.struct.names.camel;
struct DangerousMembers {
diff --git a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.struct.names.lower.test.fidl b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.struct.names.lower.test.fidl
index ca791ab..38fe0fc 100644
--- a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.struct.names.lower.test.fidl
+++ b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.struct.names.lower.test.fidl
@@ -1,7 +1,7 @@
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Generated by generate.py.
+// Generated by //src/tests/fidl/dangerous_identifiers/generate.
library fidl.test.dangerous.struct.names.lower;
struct DangerousMembers {
diff --git a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.struct.names.upper.test.fidl b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.struct.names.upper.test.fidl
index 324ce9e..ddd1f1d 100644
--- a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.struct.names.upper.test.fidl
+++ b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.struct.names.upper.test.fidl
@@ -1,7 +1,7 @@
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Generated by generate.py.
+// Generated by //src/tests/fidl/dangerous_identifiers/generate.
library fidl.test.dangerous.struct.names.upper;
struct DangerousMembers {
diff --git a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.struct.types.camel.test.fidl b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.struct.types.camel.test.fidl
index 0efa68c..ed7a53a 100644
--- a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.struct.types.camel.test.fidl
+++ b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.struct.types.camel.test.fidl
@@ -1,7 +1,7 @@
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Generated by generate.py.
+// Generated by //src/tests/fidl/dangerous_identifiers/generate.
library fidl.test.dangerous.struct.types.camel;
using membertype = uint32;
diff --git a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.struct.types.lower.test.fidl b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.struct.types.lower.test.fidl
index 7106f35..edf4408 100644
--- a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.struct.types.lower.test.fidl
+++ b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.struct.types.lower.test.fidl
@@ -1,7 +1,7 @@
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Generated by generate.py.
+// Generated by //src/tests/fidl/dangerous_identifiers/generate.
library fidl.test.dangerous.struct.types.lower;
using membertype = uint32;
@@ -1062,7 +1062,6 @@
typename f183;
typeof f184;
uint16 f185;
- uint32 f186;
uint64 f187;
uint8 f188;
union f189;
diff --git a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.struct.types.upper.test.fidl b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.struct.types.upper.test.fidl
index 80fd050..25d2a9f58 100644
--- a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.struct.types.upper.test.fidl
+++ b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.struct.types.upper.test.fidl
@@ -1,7 +1,7 @@
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Generated by generate.py.
+// Generated by //src/tests/fidl/dangerous_identifiers/generate.
library fidl.test.dangerous.struct.types.upper;
using membertype = uint32;
diff --git a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.table.fields.camel.test.fidl b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.table.fields.camel.test.fidl
index 05c4262..8a226d0 100644
--- a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.table.fields.camel.test.fidl
+++ b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.table.fields.camel.test.fidl
@@ -1,7 +1,7 @@
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Generated by generate.py.
+// Generated by //src/tests/fidl/dangerous_identifiers/generate.
library fidl.test.dangerous.table.fields.camel;
table DangerousMembers {
@@ -26,7 +26,6 @@
19: uint32 Box;
20: uint32 Break;
21: uint32 Byte;
- 215: uint32 Bytes;
22: uint32 Case;
23: uint32 Catch;
24: uint32 Chan;
@@ -196,10 +195,6 @@
188: uint32 Uint64;
189: uint32 Uint8;
190: uint32 Union;
- 216: uint32 Unknown;
- 217: uint32 UnknownBytes;
- [BindingsDenylist = "dart"]
- 218: uint32 UnknownData;
191: uint32 Unsafe;
192: uint32 Unsigned;
193: uint32 Unsized;
@@ -224,4 +219,9 @@
212: uint32 Xunion;
213: uint32 Yield;
214: uint32 Zx;
+ 215: uint32 Bytes;
+ 216: uint32 Unknown;
+ 217: uint32 UnknownBytes;
+ [BindingsDenylist = "dart"]
+ 218: uint32 UnknownData;
};
diff --git a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.table.fields.lower.test.fidl b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.table.fields.lower.test.fidl
index a865d4a..7c11e04 100644
--- a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.table.fields.lower.test.fidl
+++ b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.table.fields.lower.test.fidl
@@ -1,7 +1,7 @@
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Generated by generate.py.
+// Generated by //src/tests/fidl/dangerous_identifiers/generate.
library fidl.test.dangerous.table.fields.lower;
table DangerousMembers {
@@ -26,7 +26,6 @@
19: uint32 box;
20: uint32 break;
21: uint32 byte;
- 215: uint32 bytes;
22: uint32 case;
23: uint32 catch;
24: uint32 chan;
@@ -196,10 +195,6 @@
188: uint32 uint64;
189: uint32 uint8;
190: uint32 union;
- 216: uint32 unknown;
- 217: uint32 unknown_bytes;
- [BindingsDenylist = "dart"]
- 218: uint32 unknown_data;
191: uint32 unsafe;
192: uint32 unsigned;
193: uint32 unsized;
@@ -224,4 +219,9 @@
212: uint32 xunion;
213: uint32 yield;
214: uint32 zx;
+ 215: uint32 bytes;
+ 216: uint32 unknown;
+ 217: uint32 unknown_bytes;
+ [BindingsDenylist = "dart"]
+ 218: uint32 unknown_data;
};
diff --git a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.table.fields.upper.test.fidl b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.table.fields.upper.test.fidl
index b96c9d1..875feb9 100644
--- a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.table.fields.upper.test.fidl
+++ b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.table.fields.upper.test.fidl
@@ -1,7 +1,7 @@
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Generated by generate.py.
+// Generated by //src/tests/fidl/dangerous_identifiers/generate.
library fidl.test.dangerous.table.fields.upper;
table DangerousMembers {
@@ -26,7 +26,6 @@
19: uint32 BOX;
20: uint32 BREAK;
21: uint32 BYTE;
- 215: uint32 BYTES;
22: uint32 CASE;
23: uint32 CATCH;
24: uint32 CHAN;
@@ -196,10 +195,6 @@
188: uint32 UINT64;
189: uint32 UINT8;
190: uint32 UNION;
- 216: uint32 UNKNOWN;
- 217: uint32 UNKNOWN_BYTES;
- [BindingsDenylist = "dart"]
- 218: uint32 UNKNOWN_DATA;
191: uint32 UNSAFE;
192: uint32 UNSIGNED;
193: uint32 UNSIZED;
@@ -224,4 +219,9 @@
212: uint32 XUNION;
213: uint32 YIELD;
214: uint32 ZX;
+ 215: uint32 BYTES;
+ 216: uint32 UNKNOWN;
+ 217: uint32 UNKNOWN_BYTES;
+ [BindingsDenylist = "dart"]
+ 218: uint32 UNKNOWN_DATA;
};
diff --git a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.table.names.camel.test.fidl b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.table.names.camel.test.fidl
index 5ca3fc7..95d1734 100644
--- a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.table.names.camel.test.fidl
+++ b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.table.names.camel.test.fidl
@@ -1,7 +1,7 @@
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Generated by generate.py.
+// Generated by //src/tests/fidl/dangerous_identifiers/generate.
library fidl.test.dangerous.table.names.camel;
using membertype = uint32;
@@ -900,7 +900,6 @@
19: Box f18;
20: Break f19;
21: Byte f20;
- 215: Bytes f214;
22: Case f21;
23: Catch f22;
24: Chan f23;
@@ -1070,10 +1069,6 @@
188: Uint64 f187;
189: Uint8 f188;
190: Union f189;
- 216: Unknown f215;
- 217: UnknownBytes f216;
- [BindingsDenylist = "dart"]
- 218: UnknownData f217;
191: Unsafe f190;
192: Unsigned f191;
193: Unsized f192;
@@ -1098,4 +1093,9 @@
212: Xunion f211;
213: Yield f212;
214: Zx f213;
+ 215: Bytes f214;
+ 216: Unknown f215;
+ 217: UnknownBytes f216;
+ [BindingsDenylist = "dart"]
+ 218: UnknownData f217;
};
diff --git a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.table.names.lower.test.fidl b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.table.names.lower.test.fidl
index 6e6ef77..691e48f 100644
--- a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.table.names.lower.test.fidl
+++ b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.table.names.lower.test.fidl
@@ -1,7 +1,7 @@
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Generated by generate.py.
+// Generated by //src/tests/fidl/dangerous_identifiers/generate.
library fidl.test.dangerous.table.names.lower;
using membertype = uint32;
@@ -896,7 +896,6 @@
19: box f18;
20: break f19;
21: byte f20;
- 215: bytes f214;
22: case f21;
23: catch f22;
24: chan f23;
@@ -1062,14 +1061,10 @@
184: typename f183;
185: typeof f184;
186: uint16 f185;
- 187: uint32 f186;
+ 187: reserved;
188: uint64 f187;
189: uint8 f188;
190: union f189;
- 216: unknown f215;
- 217: unknown_bytes f216;
- [BindingsDenylist = "dart"]
- 218: unknown_data f217;
191: unsafe f190;
192: unsigned f191;
193: unsized f192;
@@ -1094,4 +1089,9 @@
212: xunion f211;
213: yield f212;
214: zx f213;
+ 215: bytes f214;
+ 216: unknown f215;
+ 217: unknown_bytes f216;
+ [BindingsDenylist = "dart"]
+ 218: unknown_data f217;
};
diff --git a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.table.names.upper.test.fidl b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.table.names.upper.test.fidl
index 6d834dd..730e76f 100644
--- a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.table.names.upper.test.fidl
+++ b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.table.names.upper.test.fidl
@@ -1,7 +1,7 @@
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Generated by generate.py.
+// Generated by //src/tests/fidl/dangerous_identifiers/generate.
library fidl.test.dangerous.table.names.upper;
using membertype = uint32;
@@ -900,7 +900,6 @@
19: BOX f18;
20: BREAK f19;
21: BYTE f20;
- 215: BYTES f214;
22: CASE f21;
23: CATCH f22;
24: CHAN f23;
@@ -1070,10 +1069,6 @@
188: UINT64 f187;
189: UINT8 f188;
190: UNION f189;
- 216: UNKNOWN f215;
- 217: UNKNOWN_BYTES f216;
- [BindingsDenylist = "dart"]
- 218: UNKNOWN_DATA f217;
191: UNSAFE f190;
192: UNSIGNED f191;
193: UNSIZED f192;
@@ -1098,4 +1093,9 @@
212: XUNION f211;
213: YIELD f212;
214: ZX f213;
+ 215: BYTES f214;
+ 216: UNKNOWN f215;
+ 217: UNKNOWN_BYTES f216;
+ [BindingsDenylist = "dart"]
+ 218: UNKNOWN_DATA f217;
};
diff --git a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.using.camel.test.fidl b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.using.camel.test.fidl
index ceea199..c3b821e 100644
--- a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.using.camel.test.fidl
+++ b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.using.camel.test.fidl
@@ -1,7 +1,7 @@
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Generated by generate.py.
+// Generated by //src/tests/fidl/dangerous_identifiers/generate.
library fidl.test.dangerous.using.camel;
using Abstract = vector;
using Alignas = vector;
diff --git a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.using.lower.test.fidl b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.using.lower.test.fidl
index 8604f351..f4fd1b9 100644
--- a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.using.lower.test.fidl
+++ b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.using.lower.test.fidl
@@ -1,7 +1,7 @@
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Generated by generate.py.
+// Generated by //src/tests/fidl/dangerous_identifiers/generate.
library fidl.test.dangerous.using.lower;
using abstract = vector;
using alignas = vector;
diff --git a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.using.upper.test.fidl b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.using.upper.test.fidl
index be47c75..cf5b183 100644
--- a/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.using.upper.test.fidl
+++ b/src/tests/fidl/dangerous_identifiers/fidl/fidl.test.dangerous.using.upper.test.fidl
@@ -1,7 +1,7 @@
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Generated by generate.py.
+// Generated by //src/tests/fidl/dangerous_identifiers/generate.
library fidl.test.dangerous.using.upper;
using ABSTRACT = vector;
using ALIGNAS = vector;
diff --git a/src/tests/fidl/dangerous_identifiers/generate.py b/src/tests/fidl/dangerous_identifiers/generate.py
deleted file mode 100755
index 680ebcc..0000000
--- a/src/tests/fidl/dangerous_identifiers/generate.py
+++ /dev/null
@@ -1,494 +0,0 @@
-#!/usr/bin/env python3
-# Copyright 2019 The Fuchsia Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-import datetime
-import os
-import platform
-import re
-import subprocess
-import sys
-
-from typing import List
-
-# Where is this script?
-DIR = os.path.dirname(os.path.realpath(__file__))
-
-# What platform are we on?
-HOST_PLARFORM = "{}-{}".format(
- platform.system().lower().replace("darwin", "mac"),
- {
- "x86_64": "x64",
- "aarch64": "arm64",
- }[platform.machine()],
-)
-
-# Where is gn?
-GN = os.path.realpath(
- os.path.join(
- DIR, '../../../../prebuilt/third_party/gn', HOST_PLARFORM, 'gn'))
-FUCHSIA_DIR = os.environ.get('FUCHSIA_DIR')
-FUCHSIA_BUILD_DIR = os.environ.get('FUCHSIA_BUILD_DIR')
-if FUCHSIA_BUILD_DIR is None:
- print('Run "fx exec %s".' % sys.argv[0])
- sys.exit(1)
-FIDL_FORMAT = os.path.join(FUCHSIA_BUILD_DIR, 'host_x64', 'fidl-format')
-RUST_FORMAT = os.path.join(FUCHSIA_DIR, 'prebuilt', 'third_party', 'rust_tools', 'linux-x64', 'bin', 'rustfmt')
-
-
-# IdentifierDef represents individual parts of an identifier, along with a tag.
-# An identifier definition produces an `Identifier` when styled.
-#
-# For instance, the defintion
-#
-# my_super_identifier:8
-#
-# has three parts [my, super, identifer] and tag 8.
-class IdentifierDef:
-
- def __init__(self, parts: List[str], tag: int, bindings_denylist: str):
- self.parts = parts
- self.tag = tag
- self.bindings_denylist = bindings_denylist
-
-
-class Identifier:
-
- def __init__(self, ident: str, tag: int, bindings_denylist: str):
- self.ident = ident
- self.tag = tag
- self.bindings_denylist = bindings_denylist
-
-
-# Define ways that identifiers may be rendered
-STYLES = []
-
-
-def style(func):
- STYLES.append((func.__name__, func))
-
-
-@style
-def lower(ident):
- return '_'.join(w.lower() for w in ident)
-
-
-@style
-def upper(ident):
- return '_'.join(w.upper() for w in ident)
-
-
-@style
-def camel(ident):
- return ''.join(w.capitalize() for w in ident)
-
-
-# Define places that identifiers may appear in a FIDL library:
-USES = []
-
-
-def use(func):
- USES.append((func.__name__.replace('_', '.'), func))
-
-
-@use
-def constants(f, idents: List[Identifier]):
- for ident in idents:
- # TODO(fxbug.dev/38124): Enable this case once we've clarified these edge cases
- # and chosen a way to unambiguously reference the root library. Currently,
- # "const uint32 uint32 = 1;" will fail with an includes-cycle fidlc error.
- if ident.ident == "uint32":
- continue
- if ident.bindings_denylist:
- f.write('[BindingsDenylist="%s"]\n' % ident.bindings_denylist)
- f.write('const uint32 %s = 1;\n' % ident.ident)
-
-
-@use
-def using(f, idents: List[Identifier]):
- for ident in idents:
- if ident.bindings_denylist:
- f.write('[BindingsDenylist="%s"]\n' % ident.bindings_denylist)
- f.write('using %s = vector;\n' % ident.ident)
-
-
-# TODO(ianloic): Make this test work. It requires N libraries to import for N
-# identifiers. That doesn't fit well into the model of this test.
-#@use
-#def using_as(f, idents):
-# for ident in idents:
-# f.write('using fuchsia.mem as %s;\n' % ident)
-
-
-@use
-def enums(f, idents: List[Identifier]):
- # enums with every dangerous name
- for ident in idents:
- if ident.bindings_denylist:
- f.write('[BindingsDenylist="%s"]\n' % ident.bindings_denylist)
- f.write('enum %s { MEMBER = 1; };\n' % ident.ident)
-
- # enum with every dangerous field name
- f.write('enum DangerousMembers {\n')
- for ident in idents:
- if ident.bindings_denylist:
- f.write('[BindingsDenylist="%s"]\n' % ident.bindings_denylist)
- f.write(' %s = %d;\n' % (ident.ident, ident.tag - 1))
- f.write('};\n')
-
-
-@use
-def struct_types(f, idents: List[Identifier]):
- # structs with every dangerous name
- f.write('using membertype = uint32;\n')
- for ident in idents:
- # TODO(fxbug.dev/8042): Having a declaration with same same name as what is
- # aliased causes a cycle.
- if ident.ident == "uint32":
- continue
- if ident.bindings_denylist:
- f.write('[BindingsDenylist="%s"]\n' % ident.bindings_denylist)
- f.write('struct %s { membertype member = 1; };\n' % ident.ident)
-
- # a struct with every dangerous name as the field type
- f.write('struct DangerousMembers {\n')
- for ident in idents:
- # dangerous field type
- if ident.bindings_denylist:
- f.write('[BindingsDenylist="%s"]\n' % ident.bindings_denylist)
- f.write(' %s f%d;\n' % (ident.ident, ident.tag - 1))
- f.write('};\n')
-
-
-@use
-def struct_names(f, idents: List[Identifier]):
- # a struct with every dangerous name as the field name
- f.write('struct DangerousMembers {\n')
- for ident in idents:
- if ident.bindings_denylist:
- f.write('[BindingsDenylist="%s"]\n' % ident.bindings_denylist)
- f.write(' uint32 %s;\n' % ident.ident)
- f.write('};\n')
-
-
-# TODO(fxbug.dev/8081)
-# Temporarily disabled due to superlinear compiler time and peak memory usage.
-# @use
-# def union_names(f, idents):
-# # unions with every dangerous name
-# f.write('using membertype = uint32;\n')
-# for ident in idents:
-# # TODO(fxbug.dev/8042): Having a declaration with same same name as what is
-# # aliased causes a cycle.
-# if ident == "uint32":
-# continue
-# f.write('union %s { membertype member; };\n' % ident)
-#
-# # a union with every dangerous name as the field type
-# f.write('union DangerousMembers {\n')
-# for i, ident in enumerate(idents):
-# # dangerous field type
-# f.write(' %s f%d;\n' % (ident, i))
-# f.write('};\n')
-#
-#
-# @use
-# def union_types(f, idents):
-# # a union with every dangerous name as the field name
-# f.write('union DangerousMembers {\n')
-# for i, ident in enumerate(idents):
-# f.write(' uint32 %s;\n' % (ident))
-# f.write('};\n')
-
-
-@use
-def table_names(f, idents: List[Identifier]):
- # tables with every dangerous name
- f.write('using membertype = uint32;\n')
- for ident in idents:
- # TODO(fxbug.dev/8042): Having a declaration with same same name as what is
- # aliased causes a cycle.
- if ident.ident == "uint32":
- continue
- if ident.bindings_denylist:
- f.write('[BindingsDenylist="%s"]\n' % ident.bindings_denylist)
- f.write('table %s { 1: membertype member; };\n' % ident.ident)
- # a table with every dangerous name as the field type
- f.write('table DangerousMembers {\n')
- for ident in idents:
- # dangerous field type
- if ident.bindings_denylist:
- f.write('[BindingsDenylist="%s"]\n' % ident.bindings_denylist)
- f.write(' %s: %s f%s;\n' % (ident.tag, ident.ident, ident.tag - 1))
- f.write('};\n')
-
-
-@use
-def table_fields(f, idents: List[Identifier]):
- # a table with every dangerous name as the field name
- f.write('table DangerousMembers {\n')
- for ident in idents:
- if ident.bindings_denylist:
- f.write('[BindingsDenylist="%s"]\n' % ident.bindings_denylist)
- f.write(' %d: uint32 %s;\n' % (ident.tag, ident.ident))
- f.write('};\n')
-
-
-@use
-def protocol_names(f, idents: List[Identifier]):
- # a protocols with every dangerous name
- for ident in idents:
- if ident.bindings_denylist:
- f.write('[BindingsDenylist="%s"]\n' % ident.bindings_denylist)
- f.write('protocol %s { JustOneMethod(); };\n' % ident.ident)
-
-
-@use
-def method_names(f, idents: List[Identifier]):
- # a protocol with every dangerous name as a method name
- f.write('protocol DangerousMethods {\n')
- for ident in idents:
- if ident.bindings_denylist:
- f.write('[BindingsDenylist="%s"]\n' % ident.bindings_denylist)
- f.write(' %s();\n' % ident.ident)
- f.write('};\n')
-
-
-@use
-def event_names(f, idents: List[Identifier]):
- # a protocol with every dangerous name as an event name
- f.write('protocol DangerousEvents {\n')
- for ident in idents:
- if ident.bindings_denylist:
- f.write('[BindingsDenylist="%s"]\n' % ident.bindings_denylist)
- f.write(' -> %s();\n' % ident.ident)
- f.write('};\n')
-
-
-@use
-def method_request_arguments(f, idents: List[Identifier]):
- # a protocol with every dangerous name as a request argument
- f.write('using argtype = uint32;\n')
- f.write('protocol DangerousRequestArguments {\n')
- for ident in idents:
- if ident.bindings_denylist:
- f.write('[BindingsDenylist="%s"]\n' % ident.bindings_denylist)
- f.write(' Method%d(argtype %s);\n' % (ident.tag - 1, ident.ident))
- f.write('};\n')
-
-
-@use
-def method_response_arguments(f, idents: List[Identifier]):
- # a protocol with every dangerous name as a response argument
- f.write('using argtype = uint32;\n')
- f.write('protocol DangerousResponseArguments {\n')
- for ident in idents:
- if ident.bindings_denylist:
- f.write('[BindingsDenylist="%s"]\n' % ident.bindings_denylist)
- f.write(
- ' Method%d() -> (argtype %s);\n' % (ident.tag - 1, ident.ident))
- f.write('};\n')
-
-
-@use
-def method_event_arguments(f, idents: List[Identifier]):
- # a protocol with every dangerous name as a event argument
- f.write('using argtype = uint32;\n')
- f.write('protocol DangerousResponseArguments {\n')
- for ident in idents:
- if ident.bindings_denylist:
- f.write('[BindingsDenylist="%s"]\n' % ident.bindings_denylist)
- f.write(' -> Event%d(argtype %s);\n' % (ident.tag - 1, ident.ident))
- f.write('};\n')
-
-
-def generated(prefix):
- """Return a header line indicating that this is a generated file."""
- return """{prefix} Copyright 2019 The Fuchsia Authors. All rights reserved.
-{prefix} Use of this source code is governed by a BSD-style license that can be
-{prefix} found in the LICENSE file.
-{prefix} Generated by {generator}.
-""".format(
- prefix=prefix,
- year=datetime.datetime.now().year,
- generator=os.path.basename(__file__))
-
-
-def library_target(library_name):
- return '//src/tests/fidl/dangerous_identifiers/fidl:%s' % library_name
-
-
-def dangerous_identifiers() -> List[IdentifierDef]:
- """Load a list of dangerous identifiers definitions from the source tree.
-
- Verifies that all definitions are well formed, and that their tags are unique.
- """
- file_path = os.path.join(DIR, 'dangerous_identifiers.txt')
- lines = (
- line.strip()
- for line in open(file_path).readlines()
- if not line.startswith('#'))
-
- failed = False
- idents = []
- tags_seen = set()
- for line in lines:
- line_search = re.match(
- r'^([a-z0-9_]+):([0-9]+)(\s+BindingsDenylist=(.+))?$', line)
- if line_search:
- parts = line_search.group(1).split('_')
- tag = int(line_search.group(2))
- bindings_denylist = ""
- if line_search.group(4):
- bindings_denylist = line_search.group(4)
- if tag not in tags_seen:
- tags_seen.add(tag)
- idents.append(IdentifierDef(parts, tag, bindings_denylist))
- else:
- failed = True
- print("line '%s' has duplicate tag" % line)
- else:
- failed = True
- print("line '%s' is malformed" % line)
-
- if failed:
- exit(1)
- return idents
-
-
-def generate_fidl(identifier_defs: List[IdentifierDef]) -> List[str]:
- """Generate FIDL libraries for the specified identifier definitions.
-
- Return the list of library names.
- """
- directory = os.path.join(DIR, 'fidl')
- os.makedirs(directory, exist_ok=True)
- prefix = 'fidl.test.dangerous'
- # generate FIDL libraries
- library_names = []
- for style_name, style_func in STYLES:
- for use_name, use_func in USES:
- library_name = '%s.%s.%s' % (prefix, use_name, style_name)
- fidl_file = os.path.join(directory, '%s.test.fidl' % library_name)
- with open(fidl_file, 'w') as f:
- f.write(generated('//'))
- f.write('library %s;\n' % library_name)
- use_func(
- f, [
- Identifier(
- style_func(r.parts), r.tag, r.bindings_denylist)
- for r in identifier_defs
- ])
- subprocess.check_output([FIDL_FORMAT, '-i', fidl_file])
- library_names.append(library_name)
-
- # generate BUILD.gn for FIDL libraries
- build_file = os.path.join(directory, 'BUILD.gn')
- with open(build_file, 'w') as build_gn:
- build_gn.write(generated('#'))
- build_gn.write('import("//build/fidl/fidl.gni")\n\n')
- build_gn.write('group("fidl") {\ndeps=[\n')
- for library_name in library_names:
- build_gn.write(' ":%s",\n' % library_name)
- build_gn.write(']}\n')
- for library_name in library_names:
- build_gn.write(
- 'fidl("%s") {\n sources = [ "%s.test.fidl" ] }\n\n' %
- (library_name, library_name))
- subprocess.check_output([GN, 'format', build_file])
-
- return library_names
-
-
-def generate_cpp(libraries: List[str]) -> None:
- directory = os.path.join(DIR, 'cpp')
- os.makedirs(directory, exist_ok=True)
-
- # generate BUILD.gn for C++ test
- build_file = os.path.join(directory, 'BUILD.gn')
- with open(build_file, 'w') as build_gn:
- build_gn.write(generated('#'))
- for library_name in libraries:
- build_gn.write(
- """source_set("%s_cpp") {
- output_name = "cpp_fidl_dangerous_identifiers_test_%s"
- sources = [ "%s_test.cc" ]
- deps = [
-""" % (library_name, library_name, library_name))
- build_gn.write(' "%s",\n' % library_target(library_name))
- build_gn.write(' ]\n}\n')
- build_gn.write("""group("cpp") {
- deps = [""")
- for library_name in libraries:
- build_gn.write("""
- ":%s_cpp",
-""" % (library_name))
- build_gn.write("""
- ]
- }""")
-
- subprocess.check_output([GN, 'format', build_file])
-
-
-def generate_rust(libraries: List[str]) -> None:
- os.makedirs(os.path.join(DIR, 'rust', 'src'), exist_ok=True)
-
- # Allowlist of libraries we can compile in Rust
- # TODO(fxbug.dev/60219): Make all libraries pass.
- allowed_libraries = {
- 'fidl.test.dangerous.constants.lower',
- 'fidl.test.dangerous.constants.camel',
- 'fidl.test.dangerous.constants.upper',
- 'fidl.test.dangerous.using.lower',
- 'fidl.test.dangerous.using.camel',
- 'fidl.test.dangerous.using.upper',
- 'fidl.test.dangerous.enums.lower',
- 'fidl.test.dangerous.struct.types.lower',
- 'fidl.test.dangerous.struct.types.upper',
- 'fidl.test.dangerous.table.names.lower',
- 'fidl.test.dangerous.table.names.camel',
- 'fidl.test.dangerous.table.names.upper',
- }
-
- # BUILD.gn
- build_file = os.path.join(DIR, 'rust', 'BUILD.gn')
- with open(build_file, 'w') as f:
- f.write(generated('#'))
- f.write('\n')
- f.write('import("//build/rust/rustc_test.gni")\n')
- f.write('import("//tools/fidl/measure-tape/measure_tape.gni")\n')
- f.write('\n')
- f.write('rustc_test("rust") {\n')
- f.write(' sources = [ "src/lib.rs" ]\n')
- f.write(' deps = [\n')
- for library_name in libraries:
- f.write(' ')
- if library_name not in allowed_libraries:
- f.write('# ')
- f.write('"%s-rustc",\n' % library_target(library_name))
- f.write(' ]\n')
- f.write('}\n')
- subprocess.check_output([GN, 'format', build_file])
-
- # lib.rs
- lib_rs = os.path.join(DIR, 'rust', 'src', 'lib.rs')
- with open(lib_rs, 'w') as f:
- f.write(generated('//'))
- f.write('#![cfg(test)]\n')
- f.write('#![allow(unused_imports)]\n')
- f.write('use {\n')
- for library_name in libraries:
- f.write(' ')
- if library_name not in allowed_libraries:
- f.write('// ')
- f.write('fidl_%s,\n' % library_name.replace('.', '_'))
- f.write('};\n')
- subprocess.check_output([RUST_FORMAT, lib_rs])
-
-
-if __name__ == '__main__':
- identifier_defs = dangerous_identifiers()
- library_names = generate_fidl(identifier_defs)
- generate_cpp(library_names)
- generate_rust(library_names)
diff --git a/src/tests/fidl/dangerous_identifiers/generate.sh b/src/tests/fidl/dangerous_identifiers/generate.sh
new file mode 100755
index 0000000..f97e0de
--- /dev/null
+++ b/src/tests/fidl/dangerous_identifiers/generate.sh
@@ -0,0 +1,11 @@
+#!/bin/bash
+# Copyright 2020 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+set -euo pipefail
+
+# Go to the source directory
+cd "$(dirname ${BASH_SOURCE[0]})"
+
+exec python3 -m generate $*
\ No newline at end of file
diff --git a/src/tests/fidl/dangerous_identifiers/generate/__init__.py b/src/tests/fidl/dangerous_identifiers/generate/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/tests/fidl/dangerous_identifiers/generate/__init__.py
diff --git a/src/tests/fidl/dangerous_identifiers/generate/__main__.py b/src/tests/fidl/dangerous_identifiers/generate/__main__.py
new file mode 100644
index 0000000..d72ac03
--- /dev/null
+++ b/src/tests/fidl/dangerous_identifiers/generate/__main__.py
@@ -0,0 +1,212 @@
+#!/usr/bin/env python3
+# Copyright 2020 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import datetime
+import os
+import platform
+import re
+import subprocess
+import sys
+
+from typing import List, Callable
+
+from generate.types import *
+from generate.identifiers import IDENTIFIERS
+from generate.styles import STYLES
+from generate.uses import USES
+
+# Where is this script?
+MODULE = os.path.dirname(os.path.realpath(__file__))
+
+# Where is the directory containing the module?
+DIR = os.path.dirname(MODULE)
+
+# What platform are we on?
+HOST_PLARFORM = "{}-{}".format(
+ platform.system().lower().replace("darwin", "mac"),
+ {
+ "x86_64": "x64",
+ "aarch64": "arm64",
+ }[platform.machine()],
+)
+
+# Where is gn?
+GN = os.path.realpath(
+ os.path.join(
+ DIR, '../../../../prebuilt/third_party/gn', HOST_PLARFORM, 'gn'))
+FUCHSIA_DIR = os.environ.get('FUCHSIA_DIR')
+FUCHSIA_BUILD_DIR = os.environ.get('FUCHSIA_BUILD_DIR')
+if FUCHSIA_BUILD_DIR is None or FUCHSIA_DIR is None:
+ print(f'Run "fx exec {DIR}/generate.sh".')
+ sys.exit(1)
+FIDL_FORMAT = os.path.join(FUCHSIA_BUILD_DIR, 'host_x64', 'fidl-format')
+RUST_FORMAT = os.path.join(
+ FUCHSIA_DIR, 'prebuilt', 'third_party', 'rust_tools', 'linux-x64', 'bin',
+ 'rustfmt')
+
+# Validate IDENTIFIERS
+# check that the style & use names in deny rules are valid
+style_names = frozenset(style.name for style in STYLES)
+use_names = frozenset(use.name for use in USES)
+for ident in IDENTIFIERS:
+ for deny in ident.deny:
+ for style in deny.styles:
+ if style not in style_names:
+ print(
+ f'Unknown style name "{style}" in deny list for "{ident.name}"'
+ )
+ sys.exit(1)
+ for use in deny.uses:
+ if use not in use_names:
+ print(
+ f'Unknown use name "{use}" in deny list for "{ident.name}"')
+ sys.exit(1)
+
+
+def generated(prefix: str) -> str:
+ """Return a header line indicating that this is a generated file."""
+ return """{prefix} Copyright 2019 The Fuchsia Authors. All rights reserved.
+{prefix} Use of this source code is governed by a BSD-style license that can be
+{prefix} found in the LICENSE file.
+{prefix} Generated by {generator}.
+""".format(
+ prefix=prefix,
+ generator='//src/tests/fidl/dangerous_identifiers/generate')
+
+
+def library_target(library_name: str) -> str:
+ return '//src/tests/fidl/dangerous_identifiers/fidl:%s' % library_name
+
+
+def generate_fidl(identifier_defs: List[Identifier]) -> List[str]:
+ """Generate FIDL libraries for the specified identifier definitions.
+
+ Return the list of library names.
+ """
+ directory = os.path.join(DIR, 'fidl')
+ os.makedirs(directory, exist_ok=True)
+ prefix = 'fidl.test.dangerous'
+ # generate FIDL libraries
+ library_names = []
+ for style in STYLES:
+ for use in USES:
+ library_name = '%s.%s.%s' % (prefix, use.name, style.name)
+ fidl_file = os.path.join(directory, '%s.test.fidl' % library_name)
+ idents = [ident.scoped(style, use) for ident in identifier_defs]
+ with open(fidl_file, 'w') as f:
+ f.write(generated('//'))
+ f.write('library %s;\n' % library_name)
+ use(f, [ident for ident in idents if not ident.denied])
+ subprocess.check_output([FIDL_FORMAT, '-i', fidl_file])
+ library_names.append(library_name)
+
+ # generate BUILD.gn for FIDL libraries
+ build_file = os.path.join(directory, 'BUILD.gn')
+ with open(build_file, 'w') as build_gn:
+ build_gn.write(generated('#'))
+ build_gn.write('import("//build/fidl/fidl.gni")\n\n')
+ build_gn.write('group("fidl") {\ndeps=[\n')
+ for library_name in library_names:
+ build_gn.write(' ":%s",\n' % library_name)
+ build_gn.write(']}\n')
+ for library_name in library_names:
+ build_gn.write(
+ 'fidl("%s") {\n sources = [ "%s.test.fidl" ] }\n\n' %
+ (library_name, library_name))
+ subprocess.check_output([GN, 'format', build_file])
+
+ return library_names
+
+
+def generate_cpp(libraries: List[str]) -> None:
+ directory = os.path.join(DIR, 'cpp')
+ os.makedirs(directory, exist_ok=True)
+
+ # generate BUILD.gn for C++ test
+ build_file = os.path.join(directory, 'BUILD.gn')
+ with open(build_file, 'w') as build_gn:
+ build_gn.write(generated('#'))
+ for library_name in libraries:
+ build_gn.write(
+ """source_set("%s_cpp") {
+ output_name = "cpp_fidl_dangerous_identifiers_test_%s"
+ sources = [ "%s_test.cc" ]
+ deps = [
+""" % (library_name, library_name, library_name))
+ build_gn.write(' "%s",\n' % library_target(library_name))
+ build_gn.write(' ]\n}\n')
+ build_gn.write("""group("cpp") {
+ deps = [""")
+ for library_name in libraries:
+ build_gn.write("""
+ ":%s_cpp",
+""" % (library_name))
+ build_gn.write("""
+ ]
+ }""")
+
+ subprocess.check_output([GN, 'format', build_file])
+
+
+def generate_rust(libraries: List[str]) -> None:
+ os.makedirs(os.path.join(DIR, 'rust', 'src'), exist_ok=True)
+
+ # Allowlist of libraries we can compile in Rust
+ # TODO(fxbug.dev/60219): Make all libraries pass.
+ allowed_libraries = {
+ 'fidl.test.dangerous.constants.lower',
+ 'fidl.test.dangerous.constants.camel',
+ 'fidl.test.dangerous.constants.upper',
+ 'fidl.test.dangerous.using.lower',
+ 'fidl.test.dangerous.using.camel',
+ 'fidl.test.dangerous.using.upper',
+ 'fidl.test.dangerous.enums.lower',
+ 'fidl.test.dangerous.struct.types.lower',
+ 'fidl.test.dangerous.struct.types.upper',
+ 'fidl.test.dangerous.table.names.lower',
+ 'fidl.test.dangerous.table.names.camel',
+ 'fidl.test.dangerous.table.names.upper',
+ }
+
+ # BUILD.gn
+ build_file = os.path.join(DIR, 'rust', 'BUILD.gn')
+ with open(build_file, 'w') as f:
+ f.write(generated('#'))
+ f.write('\n')
+ f.write('import("//build/rust/rustc_test.gni")\n')
+ f.write('import("//tools/fidl/measure-tape/measure_tape.gni")\n')
+ f.write('\n')
+ f.write('rustc_test("rust") {\n')
+ f.write(' sources = [ "src/lib.rs" ]\n')
+ f.write(' deps = [\n')
+ for library_name in libraries:
+ f.write(' ')
+ if library_name not in allowed_libraries:
+ f.write('# ')
+ f.write('"%s-rustc",\n' % library_target(library_name))
+ f.write(' ]\n')
+ f.write('}\n')
+ subprocess.check_output([GN, 'format', build_file])
+
+ # lib.rs
+ lib_rs = os.path.join(DIR, 'rust', 'src', 'lib.rs')
+ with open(lib_rs, 'w') as f:
+ f.write(generated('//'))
+ f.write('#![cfg(test)]\n')
+ f.write('#![allow(unused_imports)]\n')
+ f.write('use {\n')
+ for library_name in libraries:
+ f.write(' ')
+ if library_name not in allowed_libraries:
+ f.write('// ')
+ f.write('fidl_%s,\n' % library_name.replace('.', '_'))
+ f.write('};\n')
+ subprocess.check_output([RUST_FORMAT, lib_rs])
+
+
+if __name__ == '__main__':
+ library_names = generate_fidl(IDENTIFIERS)
+ generate_cpp(library_names)
+ generate_rust(library_names)
diff --git a/src/tests/fidl/dangerous_identifiers/generate/identifiers.py b/src/tests/fidl/dangerous_identifiers/generate/identifiers.py
new file mode 100644
index 0000000..708920f
--- /dev/null
+++ b/src/tests/fidl/dangerous_identifiers/generate/identifiers.py
@@ -0,0 +1,249 @@
+# Copyright 2020 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+__all__ = ['IDENTIFIERS']
+
+from generate.types import Identifier, Deny
+
+# These are keywords and identifiers used in languages we support and in
+# generated bindings. This list is maintained by hand and should be expanded
+# to cover as many cases as we can think of.
+#
+# Each identifier has lower_camel_case name, a tag (used to maintain source
+# stability when adding identifiers) and optionally a deny list.
+#
+# The deny list members specify a list of styles, uses and bindings to deny.
+# The bindings list is used to decide whether to include certain identifiers
+# in the generated fidl files. If a bindings list is included then a
+# [BindingsDenyList] attribute will be used, if not then the identifier will
+# be entirely ommitted from the affected contexts.
+
+IDENTIFIERS = [
+ Identifier('abstract', 1),
+ Identifier('alignas', 2),
+ Identifier('alignof', 3),
+ Identifier('and', 4),
+ Identifier('and_eq', 5),
+ Identifier('as', 6),
+ Identifier('asm', 7),
+ Identifier('assert', 8),
+ Identifier('async', 9),
+ Identifier('atomic_cancel', 10),
+ Identifier('atomic_commit', 11),
+ Identifier('atomic_noexcept', 12),
+ Identifier('auto', 13),
+ Identifier('await', 14),
+ Identifier('become', 15),
+ Identifier('bitand', 16),
+ Identifier('bitor', 17),
+ Identifier('bool', 18),
+ Identifier('box', 19),
+ Identifier('break', 20),
+ Identifier('byte', 21),
+ Identifier('bytes', 215),
+ Identifier('case', 22),
+ Identifier('catch', 23),
+ Identifier('chan', 24),
+ Identifier('char', 25),
+ Identifier('char16_t', 26),
+ Identifier('char32_t', 27),
+ Identifier('class', 28),
+ Identifier('co_await', 29),
+ Identifier('co_return', 30),
+ Identifier('co_yield', 31),
+ Identifier('coding_traits', 32),
+ Identifier('compl', 33),
+ Identifier('concept', 34),
+ Identifier('const', 35),
+ Identifier('const_cast', 36),
+ Identifier('constexpr', 37),
+ Identifier('continue', 38),
+ Identifier('controller', 39),
+ Identifier('covariant', 40),
+ Identifier('crate', 41),
+ Identifier('decltype', 42),
+ Identifier('decoder', 43),
+ Identifier('default', 44),
+ Identifier('defer', 45),
+ Identifier('deferred', 46),
+ Identifier('delete', 47),
+ Identifier('do', 48),
+ Identifier('double', 49),
+ Identifier('dynamic', 50),
+ Identifier('dynamic_cast', 51),
+ Identifier('else', 52),
+ Identifier('encoder', 53),
+ Identifier('ensure_values_instantiated', 54),
+ Identifier('enum', 55),
+ Identifier('empty', 56),
+ Identifier('err', 57),
+ Identifier('explicit', 58),
+ Identifier('export', 59),
+ Identifier('extends', 60),
+ Identifier('extern', 61),
+ Identifier('external', 62),
+ Identifier('factory', 63),
+ Identifier('fallthrough', 64),
+ Identifier('false', 65),
+ Identifier('fidl', 66),
+ Identifier('fidl_type', 67),
+ Identifier('final', 68),
+ Identifier('finally', 69),
+ Identifier('float', 70),
+ Identifier('fn', 71),
+ Identifier('for', 72),
+ Identifier('friend', 73),
+ Identifier('func', 74),
+ Identifier('future', 75),
+ Identifier('futures', 76),
+ Identifier('get', 77),
+ Identifier('go', 78),
+ Identifier('goto', 79),
+ Identifier('has_invalid_tag', 80),
+ Identifier('hash_code', 81),
+ Identifier('if', 82),
+ Identifier('impl', 83),
+ Identifier('implements', 84),
+ Identifier('import', 85),
+ Identifier('in', 86),
+ Identifier('index', 87),
+ Identifier('inline', 88),
+ Identifier('int', 89),
+ Identifier('int16', 90),
+ Identifier('int32', 91),
+ Identifier('int64', 92),
+ Identifier('int8', 93),
+ Identifier('interface', 94),
+ Identifier('internal_tag', 95),
+ Identifier('is', 96),
+ Identifier('let', 97),
+ Identifier('lhs', 98),
+ Identifier('library', 99),
+ Identifier('list', 100),
+ Identifier('long', 101),
+ Identifier('loop', 102),
+ Identifier('macro', 103),
+ Identifier('map', 104),
+ Identifier('match', 105),
+ Identifier('mixin', 106),
+ Identifier('mod', 107),
+ Identifier('module', 108),
+ Identifier('move', 109),
+ Identifier('mut', 110),
+ Identifier('mutable', 111),
+ Identifier('namespace', 112),
+ Identifier('never', 113),
+ Identifier('new', 114),
+ Identifier('no_such_method', 115),
+ Identifier('noexcept', 116),
+ Identifier('none', 117),
+ Identifier('not', 118),
+ Identifier('not_eq', 119),
+ Identifier('null', 120),
+ Identifier('nullptr', 121),
+ Identifier('num', 122),
+ Identifier('object', 123),
+ Identifier('offset', 124),
+ Identifier('offsetof', 125),
+ Identifier('ok', 126),
+ Identifier('on_open', 127),
+ Identifier('operator', 128),
+ Identifier('option', 129),
+ Identifier('or', 130),
+ Identifier('or_eq', 131),
+ Identifier('override', 132),
+ Identifier('package', 133),
+ Identifier('part', 134),
+ Identifier('priv', 135),
+ Identifier('private', 136),
+ Identifier('proc', 137),
+ Identifier('protected', 138),
+ Identifier('proxy', 139),
+ Identifier('pub', 140),
+ Identifier('public', 141),
+ Identifier('pure', 142),
+ Identifier('range', 143),
+ Identifier('ref', 144),
+ Identifier('register', 145),
+ Identifier('reinterpret_cast', 146),
+ Identifier('requires', 147),
+ Identifier('result', 148),
+ Identifier('rethrow', 149),
+ Identifier('return', 150),
+ Identifier('rhs', 151),
+ Identifier('rune', 152),
+ Identifier('runtime_type', 153),
+ Identifier('select', 154),
+ Identifier('self', 155),
+ Identifier('send', 156),
+ Identifier('set', 157),
+ Identifier('set_controller', 158),
+ Identifier('short', 159),
+ Identifier('signed', 160),
+ Identifier('sizeof', 161),
+ Identifier('some', 162),
+ Identifier('static', 163),
+ Identifier('static_assert', 164),
+ Identifier('static_cast', 165),
+ Identifier('stream', 166),
+ Identifier('string', 167),
+ Identifier('struct', 168),
+ Identifier('stub', 169),
+ Identifier('super', 170),
+ Identifier('switch', 171),
+ Identifier('synchronized', 172),
+ Identifier('template', 173),
+ Identifier('this', 174),
+ Identifier('thread_local', 175),
+ Identifier('throw', 176),
+ Identifier('to_string', 177),
+ Identifier('trait', 178),
+ Identifier('true', 179),
+ Identifier('try', 180),
+ Identifier('type', 181),
+ Identifier('typedef', 182),
+ Identifier('typeid', 183),
+ Identifier('typename', 184),
+ Identifier('typeof', 185),
+ Identifier('uint16', 186),
+ # We use uint32 as a type in some tests which makes it conflict.
+ # See also: fxbug.dev/38124 fxbug.dev/8042)
+ Identifier(
+ 'uint32', 187, [
+ Deny(
+ styles=['lower'],
+ uses=['constants', 'struct.types', 'table.names'])
+ ]),
+ Identifier('uint64', 188),
+ Identifier('uint8', 189),
+ Identifier('union', 190),
+ Identifier('unknown', 216),
+ Identifier('unknown_bytes', 217),
+ # TODO(fxb/60495): Remedy identifier clashes.
+ Identifier('unknown_data', 218, [Deny(bindings=['dart'])]),
+ Identifier('unsafe', 191),
+ Identifier('unsigned', 192),
+ Identifier('unsized', 193),
+ Identifier('use', 194),
+ Identifier('using', 195),
+ Identifier('value', 196),
+ Identifier('value_of', 197),
+ Identifier('value_union', 198),
+ Identifier('values_map', 199),
+ Identifier('var', 200),
+ Identifier('vec', 201),
+ Identifier('virtual', 202),
+ Identifier('void', 203),
+ Identifier('volatile', 204),
+ Identifier('wchar_t', 205),
+ Identifier('where', 206),
+ Identifier('which', 207),
+ Identifier('while', 208),
+ Identifier('with', 209),
+ Identifier('xor', 210),
+ Identifier('xor_eq', 211),
+ Identifier('xunion', 212),
+ Identifier('yield', 213),
+ Identifier('zx', 214),
+]
\ No newline at end of file
diff --git a/src/tests/fidl/dangerous_identifiers/generate/styles.py b/src/tests/fidl/dangerous_identifiers/generate/styles.py
new file mode 100644
index 0000000..c2d2727
--- /dev/null
+++ b/src/tests/fidl/dangerous_identifiers/generate/styles.py
@@ -0,0 +1,32 @@
+# Copyright 2020 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+__all__ = ['STYLES']
+
+from dataclasses import dataclass
+from typing import List, Callable, Tuple
+
+from generate.types import *
+
+# Define ways that identifiers may be rendered
+STYLES: List[Style] = []
+
+
+def style(func):
+ STYLES.append(Style(func.__name__, (func,)))
+
+
+@style
+def lower(ident):
+ return '_'.join(w.lower() for w in ident)
+
+
+@style
+def upper(ident):
+ return '_'.join(w.upper() for w in ident)
+
+
+@style
+def camel(ident):
+ return ''.join(w.capitalize() for w in ident)
\ No newline at end of file
diff --git a/src/tests/fidl/dangerous_identifiers/generate/types.py b/src/tests/fidl/dangerous_identifiers/generate/types.py
new file mode 100644
index 0000000..6a43193
--- /dev/null
+++ b/src/tests/fidl/dangerous_identifiers/generate/types.py
@@ -0,0 +1,84 @@
+# Copyright 2020 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+__all__ = ['Deny', 'Identifier', 'ScopedIdentifier', 'Style', 'Use']
+
+from dataclasses import dataclass, field
+from typing import List, Callable, IO, Optional, Tuple
+from functools import reduce
+
+
+@dataclass
+class Deny:
+ styles: List[str] = field(default_factory=list)
+ uses: List[str] = field(default_factory=list)
+ bindings: List[str] = field(default_factory=list)
+
+ def matches(self, style: 'Style', use: 'Use') -> bool:
+ return not (
+ self.styles and style.name not in self.styles or
+ self.uses and use.name not in self.uses)
+
+
+@dataclass
+class Identifier:
+ name: str
+ tag: int
+ deny: List[Deny] = field(default_factory=list)
+
+ @property
+ def parts(self) -> List[str]:
+ return self.name.split('_')
+
+ def scoped(self, style: 'Style', use: 'Use') -> 'ScopedIdentifier':
+ # All the deny rules for this style & use
+ denies = [deny for deny in self.deny if deny.matches(style, use)]
+ # Bindings deny list
+ bindings_denylist = [
+ binding for deny in denies for binding in deny.bindings
+ ]
+
+ return ScopedIdentifier(
+ style(self.parts), self.tag, style, use,
+ any(d.bindings == [] for d in denies),
+ ','.join(sorted(set(bindings_denylist))))
+
+
+@dataclass
+class ScopedIdentifier:
+ name: str
+ tag: int
+ style: 'Style'
+ use: 'Use'
+ denied: bool
+ bindings_denylist: str
+
+ def __str__(self):
+ return self.name
+
+ @property
+ def decl_attributes(self) -> str:
+ '''Attributes to put on a declaration with this name.'''
+ if self.bindings_denylist:
+ return f'[BindingsDenylist="{self.bindings_denylist}"]\n'
+ else:
+ return ''
+
+
+@dataclass
+class Style:
+ name: str
+ func: Tuple[Callable[[List[str]], str]]
+
+ def __call__(self, parts: List[str]) -> str:
+ return self.func[0](parts)
+
+
+@dataclass
+class Use:
+ name: str
+ func: Tuple[Callable[[IO, List[ScopedIdentifier]], None]]
+
+ def __call__(self, f: IO, idents: List[ScopedIdentifier]):
+ return self.func[0](f, idents)
diff --git a/src/tests/fidl/dangerous_identifiers/generate/uses.py b/src/tests/fidl/dangerous_identifiers/generate/uses.py
new file mode 100644
index 0000000..49a71df
--- /dev/null
+++ b/src/tests/fidl/dangerous_identifiers/generate/uses.py
@@ -0,0 +1,207 @@
+# Copyright 2020 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+__all__ = ['USES']
+
+from typing import List
+
+from generate.types import *
+
+# Define places that identifiers may appear in a FIDL library:
+USES: List[Use] = []
+
+
+def use(func):
+ USES.append(Use(func.__name__.replace('_', '.'), (func,)))
+
+
+@use
+def constants(f, idents: List[ScopedIdentifier]):
+ for ident in idents:
+ f.write(ident.decl_attributes)
+ f.write(f'const uint32 {ident} = 1;\n')
+
+
+@use
+def using(f, idents: List[ScopedIdentifier]):
+ for ident in idents:
+ f.write(ident.decl_attributes)
+ f.write(f'using {ident} = vector;\n')
+
+
+# TODO(ianloic): Make this test work. It requires N libraries to import for N
+# identifiers. That doesn't fit well into the model of this test.
+#@use
+#def using_as(f, idents):
+# for ident in idents:
+# f.write('using fuchsia.mem as %s;\n' % ident)
+
+
+@use
+def enums(f, idents: List[ScopedIdentifier]):
+ # enums with every dangerous name
+ for ident in idents:
+ f.write(ident.decl_attributes)
+ f.write(f'enum {ident} {{ MEMBER = 1; }};\n')
+
+ # enum with every dangerous field name
+ f.write('enum DangerousMembers {\n')
+ for ident in idents:
+ f.write(ident.decl_attributes)
+ f.write(f' {ident} = {ident.tag - 1};\n')
+ f.write('};\n')
+
+
+@use
+def struct_types(f, idents: List[ScopedIdentifier]):
+ # structs with every dangerous name
+ f.write('using membertype = uint32;\n')
+ for ident in idents:
+ f.write(ident.decl_attributes)
+ f.write(f'struct {ident} {{ membertype member = 1; }};\n')
+
+ # a struct with every dangerous name as the field type
+ f.write('struct DangerousMembers {\n')
+ for ident in idents:
+ # dangerous field type
+ f.write(ident.decl_attributes)
+ f.write(f' {ident} f{ident.tag - 1};\n')
+ f.write('};\n')
+
+
+@use
+def struct_names(f, idents: List[ScopedIdentifier]):
+ # a struct with every dangerous name as the field name
+ f.write('struct DangerousMembers {\n')
+ for ident in idents:
+ f.write(ident.decl_attributes)
+ f.write(f' uint32 {ident};\n')
+ f.write('};\n')
+
+
+# TODO(fxbug.dev/8081)
+# Temporarily disabled due to superlinear compiler time and peak memory usage.
+# @use
+# def union_names(f, idents):
+# # unions with every dangerous name
+# f.write('using membertype = uint32;\n')
+# for ident in idents:
+# # TODO(fxbug.dev/8042): Having a declaration with same same name as what is
+# # aliased causes a cycle.
+# if ident == "uint32":
+# continue
+# f.write('union %s { membertype member; };\n' % ident)
+#
+# # a union with every dangerous name as the field type
+# f.write('union DangerousMembers {\n')
+# for i, ident in enumerate(idents):
+# # dangerous field type
+# f.write(' %s f%d;\n' % (ident, i))
+# f.write('};\n')
+#
+#
+# @use
+# def union_types(f, idents):
+# # a union with every dangerous name as the field name
+# f.write('union DangerousMembers {\n')
+# for i, ident in enumerate(idents):
+# f.write(' uint32 %s;\n' % (ident))
+# f.write('};\n')
+
+
+@use
+def table_names(f, idents: List[ScopedIdentifier]):
+ # tables with every dangerous name
+ f.write('using membertype = uint32;\n')
+ for ident in idents:
+ f.write(ident.decl_attributes)
+ f.write(f'table {ident} {{ 1: membertype member; }};\n')
+ # a table with every dangerous name as the field type
+ f.write('table DangerousMembers {\n')
+ next_tag = 1
+ for ident in sorted(idents, key=lambda ident: ident.tag):
+ # dangerous field type
+ while ident.tag > next_tag:
+ f.write(f' {next_tag}: reserved;\n')
+ next_tag = next_tag + 1
+ f.write(ident.decl_attributes)
+ f.write(f' {ident.tag}: {ident} f{ident.tag-1};\n')
+ next_tag = ident.tag + 1
+ f.write('};\n')
+
+
+@use
+def table_fields(f, idents: List[ScopedIdentifier]):
+ # a table with every dangerous name as the field name
+ f.write('table DangerousMembers {\n')
+ next_tag = 1
+ for ident in sorted(idents, key=lambda ident: ident.tag):
+ while ident.tag > next_tag:
+ f.write(f' {next_tag}: reserved;\n')
+ next_tag = next_tag + 1
+ f.write(ident.decl_attributes)
+ f.write(f' {ident.tag}: uint32 {ident};\n')
+ next_tag = ident.tag + 1
+ f.write('};\n')
+
+
+@use
+def protocol_names(f, idents: List[ScopedIdentifier]):
+ # a protocols with every dangerous name
+ for ident in idents:
+ f.write(ident.decl_attributes)
+ f.write(f'protocol {ident} {{ JustOneMethod(); }};\n')
+
+
+@use
+def method_names(f, idents: List[ScopedIdentifier]):
+ # a protocol with every dangerous name as a method name
+ f.write('protocol DangerousMethods {\n')
+ for ident in idents:
+ f.write(ident.decl_attributes)
+ f.write(f' {ident}();\n')
+ f.write('};\n')
+
+
+@use
+def event_names(f, idents: List[ScopedIdentifier]):
+ # a protocol with every dangerous name as an event name
+ f.write('protocol DangerousEvents {\n')
+ for ident in idents:
+ f.write(ident.decl_attributes)
+ f.write(f' -> {ident}();\n')
+ f.write('};\n')
+
+
+@use
+def method_request_arguments(f, idents: List[ScopedIdentifier]):
+ # a protocol with every dangerous name as a request argument
+ f.write('using argtype = uint32;\n')
+ f.write('protocol DangerousRequestArguments {\n')
+ for ident in idents:
+ f.write(ident.decl_attributes)
+ f.write(f' Method{ident.tag - 1}(argtype {ident});\n')
+ f.write('};\n')
+
+
+@use
+def method_response_arguments(f, idents: List[ScopedIdentifier]):
+ # a protocol with every dangerous name as a response argument
+ f.write('using argtype = uint32;\n')
+ f.write('protocol DangerousResponseArguments {\n')
+ for ident in idents:
+ f.write(ident.decl_attributes)
+ f.write(f' Method{ident.tag - 1}() -> (argtype {ident});\n')
+ f.write('};\n')
+
+
+@use
+def method_event_arguments(f, idents: List[ScopedIdentifier]):
+ # a protocol with every dangerous name as a event argument
+ f.write('using argtype = uint32;\n')
+ f.write('protocol DangerousResponseArguments {\n')
+ for ident in idents:
+ f.write(ident.decl_attributes)
+ f.write(f' -> Event{ident.tag - 1}(argtype {ident});\n')
+ f.write('};\n')
diff --git a/src/tests/fidl/dangerous_identifiers/rust/BUILD.gn b/src/tests/fidl/dangerous_identifiers/rust/BUILD.gn
index bf2cf78..63a5055 100644
--- a/src/tests/fidl/dangerous_identifiers/rust/BUILD.gn
+++ b/src/tests/fidl/dangerous_identifiers/rust/BUILD.gn
@@ -1,7 +1,7 @@
# Copyright 2019 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
-# Generated by generate.py.
+# Generated by //src/tests/fidl/dangerous_identifiers/generate.
import("//build/rust/rustc_test.gni")
import("//tools/fidl/measure-tape/measure_tape.gni")
diff --git a/src/tests/fidl/dangerous_identifiers/rust/src/lib.rs b/src/tests/fidl/dangerous_identifiers/rust/src/lib.rs
index dce5353..b167ce1 100644
--- a/src/tests/fidl/dangerous_identifiers/rust/src/lib.rs
+++ b/src/tests/fidl/dangerous_identifiers/rust/src/lib.rs
@@ -1,7 +1,7 @@
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Generated by generate.py.
+// Generated by //src/tests/fidl/dangerous_identifiers/generate.
#![cfg(test)]
#![allow(unused_imports)]
use {