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

Multiple statements with flags #16598

Open
gsnedders opened this issue Jun 8, 2022 · 8 comments
Open

Multiple statements with flags #16598

gsnedders opened this issue Jun 8, 2022 · 8 comments
Labels
linter Issues or pull requests regarding the tests / linter of the JSON files.

Comments

@gsnedders
Copy link
Contributor

I managed to accidentally have the following in a PR:

"safari": [
  {
    "version_added": "16"
  },
  {
    "version_added": "preview",
    "flags": [
      {
        "type": "preference",
        "name": "CSS overflow: clip support"
      }
    ]
  }
],

This is somewhat clearly nonsense.

Per our logic, preview > 16, and it doesn't make sense for it to be added in 16, and also added in a later version behind a flag without being removed from the earlier version.

This should also be raising an error due to the ordering, given preview > 16.

@queengooborg queengooborg added the linter Issues or pull requests regarding the tests / linter of the JSON files. label Jun 8, 2022
@gsnedders
Copy link
Contributor Author

Actually, looking at what the linter does, the origin of this issue isn't really about preview at all, as the following is equally accepted, contrary to #16287:

"safari": [
  {
    "version_added": "16"
  },
  {
    "version_added": "17",
    "flags": [
      {
        "type": "preference",
        "name": "CSS overflow: clip support"
      }
    ]
  }
],

@Elchi3
Copy link
Member

Elchi3 commented Nov 10, 2023

#17005 added a lint for this but decided to ignore flags, so your above statements still pass in BCD today. We can debate if that's a good choice or not.

If you remove d.flags from this condition:

if (d.partial_implementation || d.version_removed || d.flags) {

your above examples will fail. In existing data, you'll only get very few failures in the CI:

Multiple Statements - 6 problems (6 errors, 0 warnings):
 ✖ api.ScreenOrientation.lock - Error → firefox has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ css.at-rules.font-face.src.tech_keyword - Error → firefox has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ css.properties.content-visibility - Error → firefox has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ css.properties.offset-path.ray - Error → firefox has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ css.types.ray.size - Error → firefox has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ http.headers.Service-Worker-Navigation-Preload - Error → firefox has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.

So, we could investigate if these 6 are non-sense or if they actually make sense.

@Elchi3 Elchi3 changed the title lints around "preview" as a version Multiple statements with flags Nov 10, 2023
@caugner
Copy link
Contributor

caugner commented Jan 17, 2025

There are now many more such cases:

Multiple Statements - 191 problems (191 errors, 0 warnings):
 ✖ api.MLGraphBuilder.abs - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.abs - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.add - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.add - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.argMax - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.argMax - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.argMin - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.argMin - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.averagePool2d - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.averagePool2d - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.batchNormalization - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.batchNormalization - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.cast - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.cast - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.ceil - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.ceil - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.clamp - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.clamp - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.concat - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.concat - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.constant - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.constant - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.conv2d - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.conv2d - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.convTranspose2d - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.convTranspose2d - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.cos - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.cos - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.cumulativeSum - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.dequantizeLinear - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.dequantizeLinear - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.div - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.div - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.elu - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.elu - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.equal - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.equal - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.erf - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.erf - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.exp - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.exp - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.expand - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.expand - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.floor - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.floor - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.gather - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.gather - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.gatherElements - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.gatherElements - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.gatherND - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.gatherND - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.gemm - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.gemm - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.greater - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.greater - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.greaterOrEqual - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.greaterOrEqual - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.gru - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.gru - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.gruCell - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.gruCell - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.hardSigmoid - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.hardSigmoid - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.hardSwish - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.hardSwish - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.identity - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.identity - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.input - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.input - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.instanceNormalization - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.instanceNormalization - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.l2Pool2d - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.layerNormalization - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.layerNormalization - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.leakyRelu - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.leakyRelu - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.lesser - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.lesser - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.lesserOrEqual - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.lesserOrEqual - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.linear - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.linear - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.log - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.log - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.logicalAnd - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.logicalAnd - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.logicalNot - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.logicalNot - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.logicalOr - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.logicalOr - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.logicalXor - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.logicalXor - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.lstm - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.lstmCell - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.matmul - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.matmul - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.max - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.max - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.maxPool2d - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.maxPool2d - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.min - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.min - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.mul - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.mul - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.neg - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.neg - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.pad - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.pad - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.pow - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.pow - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.prelu - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.quantizeLinear - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.quantizeLinear - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.reciprocal - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.reciprocal - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.reduceL1 - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.reduceL1 - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.reduceL2 - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.reduceL2 - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.reduceLogSum - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.reduceLogSum - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.reduceLogSumExp - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.reduceLogSumExp - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.reduceMax - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.reduceMax - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.reduceMean - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.reduceMean - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.reduceMin - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.reduceMin - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.reduceProduct - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.reduceProduct - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.reduceSum - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.reduceSum - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.reduceSumSquare - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.reduceSumSquare - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.relu - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.relu - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.resample2d - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.resample2d - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.reshape - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.reshape - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.scatterElements - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.scatterElements - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.scatterND - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.scatterND - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.sigmoid - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.sigmoid - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.sign - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.sin - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.sin - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.slice - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.slice - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.softmax - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.softmax - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.softplus - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.softplus - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.softsign - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.softsign - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.split - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.split - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.sqrt - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.sqrt - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.sub - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.sub - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.tan - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.tan - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.tanh - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.tanh - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.tile - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.tile - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.transpose - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.transpose - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.triangular - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.triangular - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.where - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.MLGraphBuilder.where - Error → chrome has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ api.ScreenOrientation.lock - Error → firefox has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ css.types.basic-shape.shape - Error → firefox has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ css.types.gradient.conic-gradient.hue_interpolation_method - Error → firefox has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ css.types.gradient.conic-gradient.interpolation_color_space - Error → firefox has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ css.types.gradient.linear-gradient.hue_interpolation_method - Error → firefox has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ css.types.gradient.linear-gradient.interpolation_color_space - Error → firefox has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ css.types.gradient.radial-gradient.hue_interpolation_method - Error → firefox has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ css.types.gradient.radial-gradient.interpolation_color_space - Error → firefox has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ css.types.gradient.repeating-conic-gradient.hue_interpolation_method - Error → firefox has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ css.types.gradient.repeating-conic-gradient.interpolation_color_space - Error → firefox has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ css.types.gradient.repeating-linear-gradient.hue_interpolation_method - Error → firefox has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ css.types.gradient.repeating-linear-gradient.interpolation_color_space - Error → firefox has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ css.types.gradient.repeating-radial-gradient.hue_interpolation_method - Error → firefox has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ css.types.gradient.repeating-radial-gradient.interpolation_color_space - Error → firefox has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.
 ✖ http.headers.Service-Worker-Navigation-Preload - Error → firefox has multiple statements for normal name exist without partial implementation! Please merge these statements and combine their notes, or set partial_implementation to true on applicable statements.

And it looks like those ML entries are indeed wrong:

  • api.MLGraphBuilder is behind a flag since 112 (that's fine ✅ ):
    "chrome": {
    "version_added": "112",
    "flags": [
    {
    "name": "#web-machine-learning-neural-network",
    "type": "preference",
    "value_to_set": "Enabled"
    }
    ]
    },
  • api.MLGraphBuilder.abs is behind a flag since 121 and since 126 (that's wrong ❌ that doesn't look right):
    "chrome": [
    {
    "version_added": "126",
    "flags": [
    {
    "name": "#web-machine-learning-neural-network",
    "type": "preference",
    "value_to_set": "Enabled"
    }
    ],
    "notes": "Supported on CPUs, GPUs and NPUs on macOS."
    },
    {
    "version_added": "121",
    "flags": [
    {
    "name": "#web-machine-learning-neural-network",
    "type": "preference",
    "value_to_set": "Enabled"
    }
    ],
    "notes": "Supported on GPUs and NPUs on Windows."
    },

Edit: The approach in MLGraphBuilder was suggested in #22569 (comment), because we don't support OS and device type dimensions.

@caugner
Copy link
Contributor

caugner commented Jan 17, 2025

Looking at Firefox support for http.headers.Service-Worker-Navigation-Preload shows a valid use case for having multiple "open" statements:

"firefox": [
{
"version_added": "preview"
},
{
"version_added": "97",
"flags": [
{
"type": "preference",
"name": "dom.serviceWorkers.navigationPreload.enabled",
"value_to_set": "true"
}
]
}
],

I think we might want to update the linter to forbid multiple "open" statements of the same "dimension", e.g.:

// Valid
[
  {
    "version_added": "preview"
  },
  {
    "version_added": "97",
    "flags": [
      {
        "type": "preference",
        "name": "dom.serviceWorkers.navigationPreload.enabled",
        "value_to_set": "true"
      }
    ]
  }
]

// Invalid
[
  ,
  {
    "version_added": "100",
    "flags": [
      {
        "type": "preference",
        "name": "dom.serviceWorkers.navigationPreload.enabled",
        "value_to_set": "true"
      }
    ]
  },
  {
    "version_added": "97",
    "flags": [
      {
        "type": "preference",
        "name": "dom.serviceWorkers.navigationPreload.enabled",
        "value_to_set": "true"
      }
    ]
  }
]

Effectively, this would forbid the approach used for the ML features.

@Elchi3
Copy link
Member

Elchi3 commented Jan 17, 2025

The ML statements use this to record different compat data for different operating systems or chips (NPU, GPU, CPU) as BCD doesn't offer any other way.

@caugner
Copy link
Contributor

caugner commented Jan 17, 2025

Checked all non-ML features:

  • api.ScreenOrientation.lock (1. partial, 2. flag)
  • css.types.basic-shape.shape (1. preview, 2. flag)
  • css.types.gradient.[repeating-]{conic,linear,radial}-gradient.hue_interpolation_method (1. stable, 2. flag)
  • css.types.gradient.[repeating-]{conic,linear,radial}-gradient.interpolation_color_space
  • http.headers.Service-Worker-Navigation-Preload (1. preview, 2. flag)

@caugner
Copy link
Contributor

caugner commented Jan 17, 2025

The ML statements use this to record different compat data for different operating systems or chips (NPU, GPU, CPU) as BCD doesn't offer any other way.

For api.MLGraphBuilder.abs, how about a single statement with notes grouped by device ...

{
  "version_added": "116",
  "flags": [
    {
      "name": "#web-machine-learning-neural-network",
      "type": "preference",
      "value_to_set": "Enabled"
    }
  ],
  "notes": [
    "Supports GPUs and NPUs since Chrome 121 (Windows) and Chrome 126 (macOS)",
    "Supports CPUs since Chrome 116 (Windows, ChromeOS and Linux) and Chrome 126 (macOS)."
  ]
}

... or by OS ...

{
  "version_added": "116",
  "flags": [
    {
      "name": "#web-machine-learning-neural-network",
      "type": "preference",
      "value_to_set": "Enabled"
    }
  ],
  "notes": [
    "Supports Windows since Chrome 116 (CPUs) and Chrome 121 (GPUs, NPUs).",
    "Supports macOS since Chrome 126 (CPUs, GPUs, NPUs).",
    "Supports ChromeOS since Chrome 116 (only CPUs).",
    "Supports Linux since Chrome 116 (only CPUs).",
  ]
}

I would argue that this is more readable/comprehensible than having multiple statements.

@Elchi3
Copy link
Member

Elchi3 commented Jan 17, 2025

Single statements with multiple notes would work for me, too. I forgot if https://webmachinelearning.github.io/webnn-status/ was generated by BCD data or if it was the other way around and @ibelem was generating BCD data from https://webmachinelearning.github.io/webnn-status/.

@ibelem do you have thoughts on the BCD data structure? Would @caugner's structure in the comment above work for you?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
linter Issues or pull requests regarding the tests / linter of the JSON files.
Projects
None yet
Development

No branches or pull requests

4 participants