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

Cannot resolve method on recursive closure variable #1787

Closed
DartBot opened this issue Feb 21, 2012 · 2 comments
Closed

Cannot resolve method on recursive closure variable #1787

DartBot opened this issue Feb 21, 2012 · 2 comments
Labels
closed-invalid Closed as we don't believe the reported issue is generally actionable

Comments

@DartBot
Copy link

DartBot commented Feb 21, 2012

This issue was originally filed by @chrisbu


What steps will reproduce the problem?
1.

main() {
  bool blah = false;
  var myFunc = () {
    print("in myfunc");
    if (blah) {
      myFunc(); <---- this line gives an error
    }
    
  };

  myFunc();
}

See: http://try.dartlang.org/s/_zIs

  1. The error is "cannot resolve method myFunc"

What is the expected output? What do you see instead?
Expected to be able to refer to the closure variable by name.
Workaround is to change the
var myFunc = () {}
to myFunc() {}
as in http://try.dartlang.org/s/TXcs

What version of the product are you using? On what operating system?
Dartboard (as at todays date)
Dart Editor 4349 (Win64)

Please provide any additional information below.
Brief discussion here: https://groups.google.com/a/dartlang.org/group/misc/browse_frm/thread/ec2854de3cd8ca3d#

@DartBot
Copy link
Author

DartBot commented Feb 22, 2012

This comment was originally written by @chrisbu


Actually, I'm not sure if this should ever work.

eg, I wouldn't expect this to work:
var i = i;

so why should this work either?
var j = () {
  j();
};

I suspect you can close this issue.

@iposva-google
Copy link
Contributor

Your analysis is correct. You cannot access the left-hand side of the variable declaration from within the initializing expression. You can recursively call a closure by naming the closure directly as in the modified example below. See: http://try.dartlang.org/s/lnss

main() {
  bool blah = true;
  var myFunc = myFunc() {
    print("in myfunc");
    if (blah) {
      blah = false;
      print("calling myFunc recursively");
      myFunc(); // <---- this line gives an error
    }
    
  };

  myFunc();
}


Added Invalid label.

@DartBot DartBot added Type-Defect closed-invalid Closed as we don't believe the reported issue is generally actionable labels Feb 22, 2012
copybara-service bot pushed a commit that referenced this issue Nov 28, 2022
Revisions updated by `dart tools/rev_sdk_deps.dart`.

ffi (https://github.com/dart-lang/ffi/compare/3ede231..17a8142):
  17a8142  2022-11-21  Daco Harkes  Add links to API reference and examples to README (#167)

fixnum (https://github.com/dart-lang/fixnum/compare/bca3816..62916f2):
  62916f2  2022-11-24  Lasse R.H. Nielsen  Split into separate libraries instead of using parts. (#97)
  14d4827  2022-11-23  Lasse R.H. Nielsen  Add `tryParse` methods. (#96)

http (https://github.com/dart-lang/http/compare/d56141d..047d6ed):
  047d6ed  2022-11-22  Brian Quinlan  Fixes a bug where requests made in different Clients would fail (#827)
  9dbbafb  2022-11-17  Brian Quinlan  Add tests for compressed responses (#823)

markdown (https://github.com/dart-lang/markdown/compare/37951d1..ee3f4e9):
  ee3f4e9  2022-11-24  Zhiguang Chen  Fix a blockquote issue (#496)
  c9048c0  2022-11-16  Zhiguang Chen  Optimise DelimiterSyntax (#492)

protobuf (https://github.com/dart-lang/protobuf/compare/ae90e53..c181573):
  c181573  2022-11-23  Kevin Moore  [api_benchmark] migrate to null-safety (#776)
  648deaf  2022-11-23  Kevin Moore  Standardize and fix lints (#775)
  bfa4c0d  2022-11-23  Kevin Moore  Fix `///` at the top of generated Dart files (#774)
  ed68426  2022-11-17  Devon Carew  Remove duplicate consts (#773)

sse (https://github.com/dart-lang/sse/compare/283568d..8d018dd):
  8d018dd  2022-11-23  Elliott Brooks (she/her)  Format markdown files (#68)
  2f6f151  2022-11-23  Elliott Brooks (she/her)  Add optional `debugKey` parameter to SSE client (#67)
  eaee6a8  2022-11-23  Elliott Brooks (she/her)  Use Fetch API in SSE Client (#66)

test (https://github.com/dart-lang/test/compare/7756833..b25dac9):
  b25dac99  2022-11-21  Kevin Moore  checks: finish async tests (#1793)
  3166163e  2022-11-18  Devon Carew  Update scorecards-analysis.yml (#1792)
  d930d5b0  2022-11-18  Nate Bosch  Add support for async soft checks (#1789)
  b1411a21  2022-11-18  Devon Carew  blast_repo fixes (#1788)
  a6aa04e0  2022-11-18  Jacob MacDonald  disable wasm tests for now as they are failing (#1791)
  8b5174c1  2022-11-17  Kevin Moore  Starting on async tests (#1787)

Change-Id: Ic361fce7753d08d43fc827f13cb1bfa1738cc16e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/272343
Auto-Submit: Devon Carew <devoncarew@google.com>
Reviewed-by: Kevin Moore <kevmoo@google.com>
Commit-Queue: Devon Carew <devoncarew@google.com>
This issue was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
closed-invalid Closed as we don't believe the reported issue is generally actionable
Projects
None yet
Development

No branches or pull requests

2 participants