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

disallow potentially non-const initializers of const constructors #811

Closed
sigmundch opened this issue Dec 12, 2011 · 15 comments
Closed

disallow potentially non-const initializers of const constructors #811

sigmundch opened this issue Dec 12, 2011 · 15 comments
Labels
area-vm Use area-vm for VM related issues, including code coverage, and the AOT and JIT backends. closed-duplicate Closed in favor of an existing report

Comments

@sigmundch
Copy link
Member

According to the spec, the following code should give an error, because the initializer is not a potentially const expression:

class A {
  final x;
  const A() : x = 1.toString();
}

main() => const A();

I'll shortly submit this as a test under language/src (CL in progress). Other (more realistic) examples to consider:
 const A(p) : x = p.toString();
 const A() : x = new List();

@DartBot
Copy link

DartBot commented Dec 12, 2011

This comment was originally written by zundel@google.com


Set owner to zundel@google.com.

@DartBot
Copy link

DartBot commented Dec 12, 2011

This comment was originally written by zundel@google.com


oops, saw this was tagged by the VM (also an issue for dartc


Removed the owner.

@DartBot
Copy link

DartBot commented Dec 26, 2011

This comment was originally written by ief...@unipro.ru


There are co19 tests for this:

LangSpecTest/07_Classes/5_Constructors/3/Constant/Constructors/A04/t02
LangSpecTest/07_Classes/5_Constructors/3/Constant/Constructors/A04/t03
LangSpecTest/07_Classes/5_Constructors/3/Constant/Constructors/A05/t01
LangSpecTest/07_Classes/5_Constructors/3/Constant/Constructors/A05/t02

@iposva-google
Copy link
Contributor

There were many changes in the const/final and initialization area. Not sure if this is still a valid bug report.


Set owner to @mhausner.
Added Accepted label.

@DartBot
Copy link

DartBot commented Jun 8, 2012

This comment was originally written by @mhausner


I will fix the compiler to require compile time constants for all default initializer expressions in const constructors.


Added this to the M1 milestone.

@DartBot
Copy link

DartBot commented Jul 19, 2012

This comment was originally written by @mhausner


This is the same issue as issue #392. It is not enough to require that the initializers are constant expressions. The must be "potentially constant expressions" as elaborated in the language spec. Implementing this is non-trivial.

@iposva-google
Copy link
Contributor

Removed this from the M1 milestone.
Added this to the M2 milestone.

@iposva-google
Copy link
Contributor

Removed this from the M2 milestone.
Added this to the M3 milestone.

@iposva-google
Copy link
Contributor

Removed this from the M3 milestone.
Added this to the M4 milestone.

@larsbak
Copy link

larsbak commented May 28, 2013

Removed this from the M4 milestone.
Added this to the M5 milestone.

@iposva-google
Copy link
Contributor

Removed Priority-Medium label.
Added Priority-Unassigned label.

@iposva-google
Copy link
Contributor

Srdjan had some fixes in that general area as well. If I remember correctly they might solve the "potentially constant expression" problem.


cc @sgmitrovic.
Removed this from the M5 milestone.
Removed Priority-Unassigned label.
Added Priority-Medium label.

@ghost
Copy link

ghost commented Jun 11, 2013

Set owner to @sgmitrovic.
Added Started label.

@ghost
Copy link

ghost commented Jun 24, 2013

Missing piece: check initializers for legal operations.


Set owner to @mhausner.
Added Accepted label.

@iposva-google
Copy link
Contributor

Added Duplicate label.
Marked as being merged into #392.

@sigmundch sigmundch added Type-Defect area-vm Use area-vm for VM related issues, including code coverage, and the AOT and JIT backends. closed-duplicate Closed in favor of an existing report labels Oct 21, 2013
copybara-service bot pushed a commit that referenced this issue Nov 27, 2023
…th, watcher

Revisions updated by `dart tools/rev_sdk_deps.dart`.

ecosystem (https://github.com/dart-lang/ecosystem/compare/dda7886..805ab4f):
  805ab4f  2023-11-22  Moritz  Add retries to `pub.dev/api/` calls (#199)
  4cc2cb4  2023-11-20  Devon Carew  add PR stats to the 'bin/report.dart weekly' command (#198)

matcher (https://github.com/dart-lang/matcher/compare/3d03fa1..fcbd361):
  fcbd361  2023-11-21  Nate Bosch  Add more advice away from predicate (#233)

native (https://github.com/dart-lang/native/compare/5dca10e..0051e78):
  0051e78d  2023-11-27  Hossein Yousefi  Generate getters for `static final` strings (#825)
  de505461  2023-11-27  Liam Appelbe  [ffigen] Update the ObjC and swift examples for the v10 code gen (#830)
  c371539d  2023-11-24  Simon Binder  ffigen: Don't generate setters for constant globals (#828)
  13b6b7e7  2023-11-24  Luke Rogers  Fixed a typo in the warn if private log message. (#824)
  9f29edc7  2023-11-21  Prerak Mann  [ffigen] Add config `ignore-source-errors`  (#810)
  6dc1c84c  2023-11-21  Hossein Yousefi  [infra] Add an issue template for jnigen (#820)
  3153a354  2023-11-21  Hossein Yousefi  [jnigen] Fix flaky tests (#814)
  8d4a241c  2023-11-21  Daco Harkes  [native_assets_cli] Add note to bump protocol version (#819)
  6c6a3d6c  2023-11-21  Daco Harkes  [infra] script to change deps to path dependencies (#817)
  893433ee  2023-11-20  Daco Harkes  [infra] Set `breaking-change` to false again (#816)
  992a563f  2023-11-20  Daco Harkes  [infra] Try to use `carryforward` (#815)
  7d9fbf38  2023-11-20  Daco Harkes  [infra] Try fix coveralls (#813)
  44861422  2023-11-20  Hossein Yousefi  [jnigen] Update links and paths to use dart-lang/native (#811)

protobuf (https://github.com/dart-lang/protobuf/compare/dcec2ed..cf43230):
  cf43230  2023-11-23  Ömer Sinan Ağacan  Update getList and getMap return types (#903)
  4e0bdff  2023-11-23  Ömer Sinan Ağacan  Make wrapped lists in PbList monomorphic (#902)

sse (https://github.com/dart-lang/sse/compare/0f6ca11..1df63f2):
  1df63f2  2023-11-21  Kevin Moore  Fix incorrect cast causing wasm failure, prepare v4.1.4 (#96)

test (https://github.com/dart-lang/test/compare/8ba0940..a0a4d1e):
  a0a4d1ee  2023-11-22  Kevin Moore  Update to latest version of lints (#2140)

vector_math (https://github.com/google/vector_math.dart/compare/294896d..e4066cc):
  e4066cc  2023-11-27  Lukas Klingsbo  Some general Vector4 optimizations (#295)
  d340ab0  2023-11-27  Lukas Klingsbo  Some general Vector3 optimizations (#294)
  571d3d0  2023-11-25  Lukas Klingsbo  fix: Revert Vector2 constructor changes (#304)

watcher (https://github.com/dart-lang/watcher/compare/b2b278a..6ac67f1):
  6ac67f1  2023-11-22  Danny Tuppeny  Enable file watcher tests on Windows (#156)

Change-Id: I0014566b05e852099bc4b82f854820e9d9992358
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/338423
Commit-Queue: Devon Carew <devoncarew@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@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
area-vm Use area-vm for VM related issues, including code coverage, and the AOT and JIT backends. closed-duplicate Closed in favor of an existing report
Projects
None yet
Development

No branches or pull requests

4 participants