Skip to content

Commit 3f5b59e

Browse files
r-barnespytorchmergebot
authored andcommitted
[codemod] c10::optional -> std::optional in caffe2/aten/src/ATen/DeviceGuard.h +117 (pytorch#126901)
Summary: Generated with ``` fbgs -f '.*\.(cpp|cxx|cc|h|hpp|cu|cuh)$' c10::optional -l | perl -pe 's/^fbsource.fbcode.//' | grep -v executorch | xargs -n 50 perl -pi -e 's/c10::optional/std::optional/g' ``` - If you approve of this diff, please use the "Accept & Ship" button :-) (117 files modified.) Test Plan: Sandcastle Reviewed By: palmje Pull Request resolved: pytorch#126901 Approved by: https://github.com/Skylion007, https://github.com/eqy
1 parent 95e5c99 commit 3f5b59e

File tree

89 files changed

+243
-243
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

89 files changed

+243
-243
lines changed

aten/src/ATen/DeviceGuard.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ inline std::optional<Device> device_of(const Tensor& t) {
2323
}
2424
}
2525

26-
inline std::optional<Device> device_of(const c10::optional<Tensor>& t) {
26+
inline std::optional<Device> device_of(const std::optional<Tensor>& t) {
2727
return t.has_value() ? device_of(t.value()) : c10::nullopt;
2828
}
2929

aten/src/ATen/FunctionalInverses.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,7 @@ Tensor FunctionalInverses::lift_fresh_inverse(const Tensor& base, const Tensor&
220220
return mutated_view;
221221
}
222222

223-
Tensor FunctionalInverses::slice_Tensor_inverse(const Tensor& base, const Tensor& mutated_view, InverseReturnMode inverse_return_mode, int64_t dim, std::optional<c10::SymInt> start, c10::optional<c10::SymInt> end, c10::SymInt step) {
223+
Tensor FunctionalInverses::slice_Tensor_inverse(const Tensor& base, const Tensor& mutated_view, InverseReturnMode inverse_return_mode, int64_t dim, std::optional<c10::SymInt> start, std::optional<c10::SymInt> end, c10::SymInt step) {
224224
if (inverse_return_mode == InverseReturnMode::AlwaysView) {
225225
// NB: assumes mutated_view is a narrowed view of base.
226226
// We should NOT do this for functionalization

aten/src/ATen/FunctionalTensorWrapper.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -526,7 +526,7 @@ Tensor to_functional_tensor(const Tensor& tensor) {
526526
TORCH_INTERNAL_ASSERT_DEBUG_ONLY(!isFunctionalTensor(tensor));
527527
return at::detail::make_tensor<FunctionalTensorWrapper>(tensor);
528528
}
529-
std::optional<Tensor> to_functional_tensor(const c10::optional<Tensor>& tensor) {
529+
std::optional<Tensor> to_functional_tensor(const std::optional<Tensor>& tensor) {
530530
if (tensor.has_value()) {
531531
return c10::make_optional<Tensor>(to_functional_tensor(*tensor));
532532
}
@@ -564,7 +564,7 @@ Tensor from_functional_tensor(const Tensor& tensor, bool assert_functional) {
564564
return tensor;
565565
}
566566
}
567-
std::optional<Tensor> from_functional_tensor(const c10::optional<Tensor>& t, bool assert_functional) {
567+
std::optional<Tensor> from_functional_tensor(const std::optional<Tensor>& t, bool assert_functional) {
568568
if (t.has_value()) {
569569
return c10::make_optional<Tensor>(from_functional_tensor(*t, assert_functional));
570570
}

aten/src/ATen/ScalarOps.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ Tensor& scalar_fill(Tensor& self, const Scalar& value) {
2323
return self;
2424
}
2525

26-
Tensor scalar_tensor_static(const Scalar& s, std::optional<ScalarType> dtype_opt, c10::optional<Device> device_opt) {
26+
Tensor scalar_tensor_static(const Scalar& s, std::optional<ScalarType> dtype_opt, std::optional<Device> device_opt) {
2727
at::tracer::impl::NoTracerDispatchMode tracer_guard;
2828
at::AutoDispatchBelowAutograd mode;
2929
Tensor result = at::detail::empty_cpu(

aten/src/ATen/VmapModeRegistrations.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ TORCH_LIBRARY_IMPL(aten, VmapMode, m) {
3939
// CppFunction::makeNamedNotSupported() to avoid listing out the types of everything.
4040
// However, registering e.g. CppFunction::makeNamedNotSupported() as an implementation
4141
// only works for operators that support boxing.
42-
#define TENSOROPTIONS std::optional<c10::ScalarType>, c10::optional<c10::Layout>, c10::optional<c10::Device>, c10::optional<bool>
42+
#define TENSOROPTIONS std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>
4343

4444
// random operations (out-of-place)
4545
m.impl("bernoulli", unsupportedRandomOp<const Tensor&, optional<Generator>>);

aten/src/ATen/core/TensorBase.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -712,7 +712,7 @@ class TORCH_API TensorBase {
712712
/// // f requires grad, has no operation creating it
713713
/// @endcode
714714

715-
/// \fn void backward(const Tensor & gradient={}, std::optional<bool> retain_graph=c10::nullopt, bool create_graph=false, c10::optional<TensorList> inputs=c10::nullopt) const;
715+
/// \fn void backward(const Tensor & gradient={}, std::optional<bool> retain_graph=c10::nullopt, bool create_graph=false, std::optional<TensorList> inputs=c10::nullopt) const;
716716
///
717717
/// Computes the gradient of current tensor with respect to graph leaves.
718718
///

aten/src/ATen/core/boxing/KernelFunction_impl.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ inline typename remove_symint<c10::SymIntArrayRef>::type unpackSymInt(c10::SymIn
7171
}
7272

7373
template <>
74-
inline typename remove_symint<std::optional<c10::SymInt>>::type unpackSymInt(c10::optional<c10::SymInt> x) {
74+
inline typename remove_symint<std::optional<c10::SymInt>>::type unpackSymInt(std::optional<c10::SymInt> x) {
7575
return x.has_value() ? c10::make_optional(x->guard_int(__FILE__, __LINE__)) : c10::nullopt;
7676
}
7777

aten/src/ATen/core/boxing/impl/kernel_function_legacy_test.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -812,7 +812,7 @@ std::optional<Tensor> called_arg2 = c10::nullopt;
812812
std::optional<int64_t> called_arg3 = c10::nullopt;
813813
std::optional<std::string> called_arg4 = c10::nullopt;
814814

815-
void kernelWithOptInputWithoutOutput(Tensor arg1, const std::optional<Tensor>& arg2, c10::optional<int64_t> arg3, c10::optional<std::string> arg4) {
815+
void kernelWithOptInputWithoutOutput(Tensor arg1, const std::optional<Tensor>& arg2, std::optional<int64_t> arg3, std::optional<std::string> arg4) {
816816
called = true;
817817
called_arg2 = arg2;
818818
called_arg3 = arg3;
@@ -846,7 +846,7 @@ TEST(OperatorRegistrationTestLegacyFunctionBasedKernel, givenKernelWithOptionalI
846846
EXPECT_FALSE(called_arg4.has_value());
847847
}
848848

849-
std::optional<Tensor> kernelWithOptInputWithOutput(Tensor arg1, const c10::optional<Tensor>& arg2, c10::optional<int64_t> arg3, c10::optional<std::string> arg4) {
849+
std::optional<Tensor> kernelWithOptInputWithOutput(Tensor arg1, const std::optional<Tensor>& arg2, std::optional<int64_t> arg3, std::optional<std::string> arg4) {
850850
called = true;
851851
called_arg2 = arg2;
852852
called_arg3 = arg3;
@@ -883,8 +883,8 @@ TEST(OperatorRegistrationTestLegacyFunctionBasedKernel, givenKernelWithOptionalI
883883
EXPECT_FALSE(called_arg4.has_value());
884884
}
885885

886-
std::tuple<std::optional<Tensor>, c10::optional<int64_t>, c10::optional<std::string>>
887-
kernelWithOptInputWithMultipleOutputs(Tensor arg1, const std::optional<Tensor>& arg2, c10::optional<int64_t> arg3, c10::optional<std::string> arg4) {
886+
std::tuple<std::optional<Tensor>, std::optional<int64_t>, std::optional<std::string>>
887+
kernelWithOptInputWithMultipleOutputs(Tensor arg1, const std::optional<Tensor>& arg2, std::optional<int64_t> arg3, std::optional<std::string> arg4) {
888888
return std::make_tuple(arg2, arg3, arg4);
889889
}
890890

aten/src/ATen/core/boxing/impl/kernel_function_test.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -554,7 +554,7 @@ std::optional<Tensor> called_arg2 = c10::nullopt;
554554
std::optional<int64_t> called_arg3 = c10::nullopt;
555555
std::optional<std::string> called_arg4 = c10::nullopt;
556556

557-
void kernelWithOptInputWithoutOutput(Tensor arg1, const std::optional<Tensor>& arg2, c10::optional<int64_t> arg3, c10::optional<std::string> arg4) {
557+
void kernelWithOptInputWithoutOutput(Tensor arg1, const std::optional<Tensor>& arg2, std::optional<int64_t> arg3, std::optional<std::string> arg4) {
558558
called = true;
559559
called_arg2 = arg2;
560560
called_arg3 = arg3;
@@ -588,7 +588,7 @@ TEST(OperatorRegistrationTestFunctionBasedKernel, givenKernelWithOptionalInputs_
588588
EXPECT_FALSE(called_arg4.has_value());
589589
}
590590

591-
std::optional<Tensor> kernelWithOptInputWithOutput(Tensor arg1, const c10::optional<Tensor>& arg2, c10::optional<int64_t> arg3, c10::optional<std::string> arg4) {
591+
std::optional<Tensor> kernelWithOptInputWithOutput(Tensor arg1, const std::optional<Tensor>& arg2, std::optional<int64_t> arg3, std::optional<std::string> arg4) {
592592
called = true;
593593
called_arg2 = arg2;
594594
called_arg3 = arg3;
@@ -625,8 +625,8 @@ TEST(OperatorRegistrationTestFunctionBasedKernel, givenKernelWithOptionalInputs_
625625
EXPECT_FALSE(called_arg4.has_value());
626626
}
627627

628-
std::tuple<std::optional<Tensor>, c10::optional<int64_t>, c10::optional<std::string>>
629-
kernelWithOptInputWithMultipleOutputs(Tensor arg1, const std::optional<Tensor>& arg2, c10::optional<int64_t> arg3, c10::optional<std::string> arg4) {
628+
std::tuple<std::optional<Tensor>, std::optional<int64_t>, std::optional<std::string>>
629+
kernelWithOptInputWithMultipleOutputs(Tensor arg1, const std::optional<Tensor>& arg2, std::optional<int64_t> arg3, std::optional<std::string> arg4) {
630630
return std::make_tuple(arg2, arg3, arg4);
631631
}
632632

aten/src/ATen/core/boxing/impl/kernel_lambda_legacy_test.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -739,7 +739,7 @@ TEST(OperatorRegistrationTestLegacyLambdaBasedKernel, givenKernelWithOptionalInp
739739

740740
auto registrar = RegisterOperators().op(
741741
"_test::opt_input(Tensor arg1, Tensor? arg2, int? arg3, str? arg4) -> ()",
742-
[&] (Tensor arg1, const std::optional<Tensor>& arg2, c10::optional<int64_t> arg3, c10::optional<std::string> arg4) {
742+
[&] (Tensor arg1, const std::optional<Tensor>& arg2, std::optional<int64_t> arg3, std::optional<std::string> arg4) {
743743
called = true;
744744
called_arg2 = arg2;
745745
called_arg3 = arg3;
@@ -779,7 +779,7 @@ TEST(OperatorRegistrationTestLegacyLambdaBasedKernel, givenKernelWithOptionalInp
779779

780780
auto registrar = RegisterOperators().op(
781781
"_test::opt_input(Tensor arg1, Tensor? arg2, int? arg3, str? arg4) -> Tensor?",
782-
[&] (Tensor arg1, const std::optional<Tensor>& arg2, c10::optional<int64_t> arg3, c10::optional<std::string> arg4) {
782+
[&] (Tensor arg1, const std::optional<Tensor>& arg2, std::optional<int64_t> arg3, std::optional<std::string> arg4) {
783783
called = true;
784784
called_arg2 = arg2;
785785
called_arg3 = arg3;
@@ -822,7 +822,7 @@ TEST(OperatorRegistrationTestLegacyLambdaBasedKernel, givenKernelWithOptionalInp
822822

823823
auto registrar = RegisterOperators().op(
824824
"_test::opt_input(Tensor arg1, Tensor? arg2, int? arg3, str? arg4) -> (Tensor?, int?, str?)",
825-
[] (Tensor arg1, const std::optional<Tensor>& arg2, c10::optional<int64_t> arg3, c10::optional<std::string> arg4) {
825+
[] (Tensor arg1, const std::optional<Tensor>& arg2, std::optional<int64_t> arg3, std::optional<std::string> arg4) {
826826
return std::make_tuple(arg2, arg3, arg4);
827827
});
828828
auto op = c10::Dispatcher::singleton().findSchema({"_test::opt_input", ""});

aten/src/ATen/core/boxing/impl/kernel_lambda_test.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -473,7 +473,7 @@ std::optional<std::string> called_arg4 = c10::nullopt;
473473
TEST(OperatorRegistrationTestLambdaBasedKernel, givenKernelWithOptionalInputs_withoutOutput_whenRegistered_thenCanBeCalled) {
474474
auto registrar = RegisterOperators().op(
475475
"_test::opt_input(Tensor arg1, Tensor? arg2, int? arg3, str? arg4) -> ()",
476-
RegisterOperators::options().kernel(DispatchKey::CPU, [] (Tensor arg1, const std::optional<Tensor>& arg2, c10::optional<int64_t> arg3, c10::optional<std::string> arg4) {
476+
RegisterOperators::options().kernel(DispatchKey::CPU, [] (Tensor arg1, const std::optional<Tensor>& arg2, std::optional<int64_t> arg3, std::optional<std::string> arg4) {
477477
called = true;
478478
called_arg2 = arg2;
479479
called_arg3 = arg3;
@@ -507,7 +507,7 @@ TEST(OperatorRegistrationTestLambdaBasedKernel, givenKernelWithOptionalInputs_wi
507507
TEST(OperatorRegistrationTestLambdaBasedKernel, givenKernelWithOptionalInputs_withOutput_whenRegistered_thenCanBeCalled) {
508508
auto registrar = RegisterOperators().op(
509509
"_test::opt_input(Tensor arg1, Tensor? arg2, int? arg3, str? arg4) -> Tensor?",
510-
RegisterOperators::options().kernel(DispatchKey::CPU, [] (Tensor arg1, const std::optional<Tensor>& arg2, c10::optional<int64_t> arg3, c10::optional<std::string> arg4) {
510+
RegisterOperators::options().kernel(DispatchKey::CPU, [] (Tensor arg1, const std::optional<Tensor>& arg2, std::optional<int64_t> arg3, std::optional<std::string> arg4) {
511511
called = true;
512512
called_arg2 = arg2;
513513
called_arg3 = arg3;
@@ -544,7 +544,7 @@ TEST(OperatorRegistrationTestLambdaBasedKernel, givenKernelWithOptionalInputs_wi
544544
TEST(OperatorRegistrationTestLambdaBasedKernel, givenKernelWithOptionalInputs_withMultipleOutputs_whenRegistered_thenCanBeCalled) {
545545
auto registrar = RegisterOperators().op(
546546
"_test::opt_input(Tensor arg1, Tensor? arg2, int? arg3, str? arg4) -> (Tensor?, int?, str?)",
547-
RegisterOperators::options().kernel(DispatchKey::CPU, [] (Tensor arg1, const std::optional<Tensor>& arg2, c10::optional<int64_t> arg3, c10::optional<std::string> arg4) {
547+
RegisterOperators::options().kernel(DispatchKey::CPU, [] (Tensor arg1, const std::optional<Tensor>& arg2, std::optional<int64_t> arg3, std::optional<std::string> arg4) {
548548
return std::make_tuple(arg2, arg3, arg4);
549549
}));
550550
auto op = c10::Dispatcher::singleton().findSchema({"_test::opt_input", ""});

aten/src/ATen/core/boxing/impl/make_boxed_from_unboxed_functor_test.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -684,7 +684,7 @@ std::optional<int64_t> called_arg3 = c10::nullopt;
684684
std::optional<std::string> called_arg4 = c10::nullopt;
685685

686686
struct KernelWithOptInputWithoutOutput final : OperatorKernel {
687-
void operator()(Tensor arg1, const std::optional<Tensor>& arg2, c10::optional<int64_t> arg3, c10::optional<std::string> arg4) {
687+
void operator()(Tensor arg1, const std::optional<Tensor>& arg2, std::optional<int64_t> arg3, std::optional<std::string> arg4) {
688688
called = true;
689689
called_arg2 = arg2;
690690
called_arg3 = arg3;
@@ -720,7 +720,7 @@ TEST(OperatorRegistrationTestFunctorBasedKernel, givenKernelWithOptionalInputs_w
720720
}
721721

722722
struct KernelWithOptInputWithOutput final : OperatorKernel {
723-
std::optional<Tensor> operator()(Tensor arg1, const c10::optional<Tensor>& arg2, c10::optional<int64_t> arg3, c10::optional<std::string> arg4) {
723+
std::optional<Tensor> operator()(Tensor arg1, const std::optional<Tensor>& arg2, std::optional<int64_t> arg3, std::optional<std::string> arg4) {
724724
called = true;
725725
called_arg2 = arg2;
726726
called_arg3 = arg3;
@@ -759,8 +759,8 @@ TEST(OperatorRegistrationTestFunctorBasedKernel, givenKernelWithOptionalInputs_w
759759
}
760760

761761
struct KernelWithOptInputWithMultipleOutputs final : OperatorKernel {
762-
std::tuple<std::optional<Tensor>, c10::optional<int64_t>, c10::optional<std::string>>
763-
operator()(Tensor arg1, const std::optional<Tensor>& arg2, c10::optional<int64_t> arg3, c10::optional<std::string> arg4) {
762+
std::tuple<std::optional<Tensor>, std::optional<int64_t>, std::optional<std::string>>
763+
operator()(Tensor arg1, const std::optional<Tensor>& arg2, std::optional<int64_t> arg3, std::optional<std::string> arg4) {
764764
return std::make_tuple(arg2, arg3, arg4);
765765
}
766766
};

aten/src/ATen/core/dispatch/Dispatcher.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,7 @@ class TORCH_API Dispatcher final {
221221
*/
222222
// NB: steals the inferred function schema, as we may need to hold on to
223223
// it for a bit until the real schema turns up
224-
RegistrationHandleRAII registerImpl(OperatorName op_name, std::optional<DispatchKey> dispatch_key, KernelFunction kernel, c10::optional<impl::CppSignature> cpp_signature, std::unique_ptr<FunctionSchema> inferred_function_schema, std::string debug);
224+
RegistrationHandleRAII registerImpl(OperatorName op_name, std::optional<DispatchKey> dispatch_key, KernelFunction kernel, std::optional<impl::CppSignature> cpp_signature, std::unique_ptr<FunctionSchema> inferred_function_schema, std::string debug);
225225

226226
/**
227227
* Given an operator, tells the Dispatcher that we have implemented a fake impl

aten/src/ATen/core/function_schema.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ FunctionSchema FunctionSchema::cloneWithRealTypes(bool with_symint) const {
5353
is_varret());
5454
}
5555

56-
bool FunctionSchema::canAliasTypeSetsAlias(const std::optional<AliasTypeSet> &lhs, const c10::optional<AliasTypeSet> &rhs) const {
56+
bool FunctionSchema::canAliasTypeSetsAlias(const std::optional<AliasTypeSet> &lhs, const std::optional<AliasTypeSet> &rhs) const {
5757
if (!lhs || !rhs) {
5858
return false;
5959
}
@@ -67,7 +67,7 @@ bool FunctionSchema::canAliasTypeSetsAlias(const std::optional<AliasTypeSet> &lh
6767
return false;
6868
}
6969

70-
std::optional<AliasTypeSet> FunctionSchema::getAliasTypeSetContainedTypes(const c10::optional<AliasTypeSet> &aliasTypeSet) const {
70+
std::optional<AliasTypeSet> FunctionSchema::getAliasTypeSetContainedTypes(const std::optional<AliasTypeSet> &aliasTypeSet) const {
7171
if (!aliasTypeSet) {
7272
return c10::nullopt;
7373
}

aten/src/ATen/core/function_schema.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -416,10 +416,10 @@ struct TORCH_API FunctionSchema {
416416

417417
// Returns whether the two AliasTypeSets contain any similarities
418418
// ie: whether the two type sets can alias.
419-
bool canAliasTypeSetsAlias(const std::optional<AliasTypeSet> &lhs, const c10::optional<AliasTypeSet> &rhs) const;
419+
bool canAliasTypeSetsAlias(const std::optional<AliasTypeSet> &lhs, const std::optional<AliasTypeSet> &rhs) const;
420420

421421
// Recursively Finds all contained types within the AliasTypeSet.
422-
std::optional<AliasTypeSet> getAliasTypeSetContainedTypes(const c10::optional<AliasTypeSet> &aliasTypeSet) const;
422+
std::optional<AliasTypeSet> getAliasTypeSetContainedTypes(const std::optional<AliasTypeSet> &aliasTypeSet) const;
423423

424424
// Similar to mapTypeToAliasTypeSet defined in alias_analysis.cpp.
425425
// Used to map types to a type such that all types that can alias will be mapped to the same type.

aten/src/ATen/core/ivalue_inl.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1909,7 +1909,7 @@ std::unordered_map<K, V> generic_to(
19091909
}
19101910

19111911
template <typename T>
1912-
std::optional<T> generic_to(IValue ivalue, _fake_type<c10::optional<T>>) {
1912+
std::optional<T> generic_to(IValue ivalue, _fake_type<std::optional<T>>) {
19131913
if (ivalue.isNone()) {
19141914
return c10::nullopt;
19151915
}

aten/src/ATen/core/op_registration/op_registration.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -399,7 +399,7 @@ class TORCH_API RegisterOperators final {
399399
}
400400

401401
private:
402-
Options&& kernel(std::optional<DispatchKey> dispatch_key, KernelFunction&& func, c10::optional<impl::CppSignature> cpp_signature, std::unique_ptr<FunctionSchema>&& inferred_function_schema) && {
402+
Options&& kernel(std::optional<DispatchKey> dispatch_key, KernelFunction&& func, std::optional<impl::CppSignature> cpp_signature, std::unique_ptr<FunctionSchema>&& inferred_function_schema) && {
403403
KernelRegistrationConfig config;
404404
config.dispatch_key = dispatch_key;
405405
config.func = std::move(func);

0 commit comments

Comments
 (0)