Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

[ggj] Replace anonymous classes with lambdas in generated code #791

Closed
miraleung opened this issue Jul 15, 2021 · 2 comments
Closed

[ggj] Replace anonymous classes with lambdas in generated code #791

miraleung opened this issue Jul 15, 2021 · 2 comments
Assignees
Labels
priority: p2 Moderately-important priority. Fix may not be included in next release. type: bug Error or flaw in code with unintended results or allowing sub-optimal usage patterns.

Comments

@miraleung
Copy link
Contributor

No description provided.

@miraleung miraleung added type: bug Error or flaw in code with unintended results or allowing sub-optimal usage patterns. priority: p2 Moderately-important priority. Fix may not be included in next release. labels Jul 15, 2021
@miraleung miraleung self-assigned this Jul 15, 2021
@miraleung miraleung removed the fixit label Jul 30, 2021
@chanseokoh
Copy link
Contributor

My idea was to have a general AST transformer that is independent of other components, which traverses an input AST and transforms an AnonymousClassExpr AST to LambdaExpr when it deems possible for conversion. However, I realized this approach is infeasible for many reasons.

For example, scoping rules are different between the anonymous classes and lambdas, so in order to make it work this way, you need full semantics analysis.

For example, in lambda expressions, this and super are lexically scoped, meaning they are relative to the enclosing class, but in an anonymous class, they are relative to the anonymous class itself. Similarly, local variables declared in lambda expressions will conflict with variables declared in the enclosing class, but in anonymous classes, they are allowed to shadow variables in the enclosing class.

So I think it should generate LambdaExpr instead of AnonymousClassExpr at the first place.

@miraleung
Copy link
Contributor Author

This has since been fixed in #815, and some anonymous classes cannot be lambda-ized due to multiple nested methods. Hence AnonymousClassExpr is still relevant in the generated client libraries.

Closing since this is specific to #815, please feel free to open a new issue for any lambda / anonymous class issues you'd like to address.

suztomo pushed a commit that referenced this issue Mar 21, 2023
🤖 I have created a release *beep* *boop*
---


## [3.0.2](googleapis/java-shared-dependencies@v3.0.1...v3.0.2) (2022-09-08)


### Dependencies

* Update dependency com.fasterxml.jackson:jackson-bom to v2.13.4 ([#789](googleapis/java-shared-dependencies#789)) ([d0b6888](googleapis/java-shared-dependencies@d0b6888))
* Update dependency com.google.auth:google-auth-library-bom to v1.10.0 ([#781](googleapis/java-shared-dependencies#781)) ([450a3fe](googleapis/java-shared-dependencies@450a3fe))
* Update dependency com.google.auth:google-auth-library-bom to v1.11.0 ([#790](googleapis/java-shared-dependencies#790)) ([fdbab60](googleapis/java-shared-dependencies@fdbab60))
* Update dependency com.google.auth:google-auth-library-bom to v1.9.0 ([#773](googleapis/java-shared-dependencies#773)) ([f59be02](googleapis/java-shared-dependencies@f59be02))
* Update dependency com.google.errorprone:error_prone_annotations to v2.15.0 ([#776](googleapis/java-shared-dependencies#776)) ([8eddf23](googleapis/java-shared-dependencies@8eddf23))
* Update dependency com.google.protobuf:protobuf-bom to v3.21.5 ([#780](googleapis/java-shared-dependencies#780)) ([80c783f](googleapis/java-shared-dependencies@80c783f))
* Update dependency io.grpc:grpc-bom to v1.48.1 ([#768](googleapis/java-shared-dependencies#768)) ([c1e6978](googleapis/java-shared-dependencies@c1e6978))
* Update dependency io.grpc:grpc-bom to v1.49.0 ([#786](googleapis/java-shared-dependencies#786)) ([c5c4a0b](googleapis/java-shared-dependencies@c5c4a0b))
* Update dependency org.checkerframework:checker-qual to v3.24.0 ([#775](googleapis/java-shared-dependencies#775)) ([4bb5bee](googleapis/java-shared-dependencies@4bb5bee))
* Update dependency org.checkerframework:checker-qual to v3.25.0 ([#788](googleapis/java-shared-dependencies#788)) ([ad9e4f1](googleapis/java-shared-dependencies@ad9e4f1))
* Update dependency org.threeten:threetenbp to v1.6.1 ([#782](googleapis/java-shared-dependencies#782)) ([30717c3](googleapis/java-shared-dependencies@30717c3))
* Update gax.version to v2.19.0 ([#785](googleapis/java-shared-dependencies#785)) ([b5a674e](googleapis/java-shared-dependencies@b5a674e))
* Update google.core.version to v2.8.10 ([#787](googleapis/java-shared-dependencies#787)) ([754e622](googleapis/java-shared-dependencies@754e622))
* Update google.core.version to v2.8.7 ([#774](googleapis/java-shared-dependencies#774)) ([0c8e010](googleapis/java-shared-dependencies@0c8e010))
* Update google.core.version to v2.8.8 ([#777](googleapis/java-shared-dependencies#777)) ([e354fe1](googleapis/java-shared-dependencies@e354fe1))
* Update google.core.version to v2.8.9 ([#784](googleapis/java-shared-dependencies#784)) ([a9847d7](googleapis/java-shared-dependencies@a9847d7))

---
This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
suztomo pushed a commit that referenced this issue Mar 21, 2023
… to v1.41.6 (#791)

[![WhiteSource Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [com.google.http-client:google-http-client-bom](https://togithub.com/googleapis/google-http-java-client) | `1.41.5` -> `1.41.6` | [![age](https://badges.renovateapi.com/packages/maven/com.google.http-client:google-http-client-bom/1.41.6/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/maven/com.google.http-client:google-http-client-bom/1.41.6/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/maven/com.google.http-client:google-http-client-bom/1.41.6/compatibility-slim/1.41.5)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/maven/com.google.http-client:google-http-client-bom/1.41.6/confidence-slim/1.41.5)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>googleapis/google-http-java-client</summary>

### [`v1.41.6`](https://togithub.com/googleapis/google-http-java-client/blob/HEAD/CHANGELOG.md#&#8203;1416-httpsgithubcomgoogleapisgoogle-http-java-clientcomparev1415v1416-2022-04-06)

[Compare Source](https://togithub.com/googleapis/google-http-java-client/compare/v1.41.5...v1.41.6)

</details>

---

### Configuration

📅 **Schedule**: At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, click this checkbox.

---

This PR has been generated by [WhiteSource Renovate](https://renovate.whitesourcesoftware.com). View repository job log [here](https://app.renovatebot.com/dashboard#github/googleapis/java-core).
suztomo pushed a commit that referenced this issue Mar 21, 2023
🤖 I have created a release *beep* *boop*
---


## [2.6.0](googleapis/java-core@v2.5.11...v2.6.0) (2022-04-14)


### Features

* **java:** remove GoogleJsonClentFeature and OpenCensusFeature after relocation ([#793](googleapis/java-core#793)) ([cafd489](googleapis/java-core@cafd489))
* **java:** remove Netty Native Image configuration after relocation to gax ([#771](googleapis/java-core#771)) ([9cc7dba](googleapis/java-core@9cc7dba))
* **java:** remove protobuf Native Image configuration ([#784](googleapis/java-core#784)) ([7a8df66](googleapis/java-core@7a8df66))
* remove native-image.properties settings  after relocation ([#794](googleapis/java-core#794)) ([219a519](googleapis/java-core@219a519))
* remove resource-config after relocation ([#795](googleapis/java-core#795)) ([8ed3110](googleapis/java-core@8ed3110))
* remove substitutions after relocation to gax ([#789](googleapis/java-core#789)) ([85280b1](googleapis/java-core@85280b1))


### Bug Fixes

* **java:** register test class for reflection to fix native image test ([#766](googleapis/java-core#766)) ([fa07125](googleapis/java-core@fa07125))


### Dependencies

* revert protobuf to 3.19 and common-protos 2.8.3 ([#798](googleapis/java-core#798)) ([27ca70c](googleapis/java-core@27ca70c))
* update dependency com.google.api-client:google-api-client-bom to v1.34.0 ([#800](googleapis/java-core#800)) ([3abc47d](googleapis/java-core@3abc47d))
* update dependency com.google.api:gax-bom to v2.16.0 ([#785](googleapis/java-core#785)) ([bd33a76](googleapis/java-core@bd33a76))
* update dependency com.google.api.grpc:proto-google-common-protos to v2.8.1 ([#792](googleapis/java-core#792)) ([3f85e62](googleapis/java-core@3f85e62))
* update dependency com.google.api.grpc:proto-google-common-protos to v2.8.2 ([#796](googleapis/java-core#796)) ([d6ea18e](googleapis/java-core@d6ea18e))
* update dependency com.google.api.grpc:proto-google-iam-v1 to v1.3.0 ([#783](googleapis/java-core#783)) ([48594f3](googleapis/java-core@48594f3))
* update dependency com.google.api.grpc:proto-google-iam-v1 to v1.3.1 ([#799](googleapis/java-core#799)) ([9fe7d35](googleapis/java-core@9fe7d35))
* update dependency com.google.errorprone:error_prone_annotations to v2.12.1 ([#788](googleapis/java-core#788)) ([cfdabb4](googleapis/java-core@cfdabb4))
* update dependency com.google.http-client:google-http-client-bom to v1.41.6 ([#791](googleapis/java-core#791)) ([d9ff405](googleapis/java-core@d9ff405))
* update dependency com.google.http-client:google-http-client-bom to v1.41.7 ([#797](googleapis/java-core#797)) ([dfc3c57](googleapis/java-core@dfc3c57))
* update dependency com.google.protobuf:protobuf-bom to v3.20.0 ([#787](googleapis/java-core#787)) ([51f59fc](googleapis/java-core@51f59fc))
* update dependency io.grpc:grpc-bom to v1.45.1 ([#780](googleapis/java-core#780)) ([cd8a078](googleapis/java-core@cd8a078))

---
This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
priority: p2 Moderately-important priority. Fix may not be included in next release. type: bug Error or flaw in code with unintended results or allowing sub-optimal usage patterns.
Projects
None yet
Development

No branches or pull requests

2 participants