Respec: Multiple dfn with the same name

Created on 25 Jul 2018  ·  10Comments  ·  Source: w3c/respec

Important info

Description of problem

The spec has a warning:

Missing <dfn> for Performance interface.

In the spec, we have:

  • A <dfn>Performance</dfn> in a section with data-dfn-for="Performance" data-link-for="Performance".

  • A <dfn>performance</dfn> in a section with data-dfn-for="WindowOrWorkerGlobalScope" data-link-for="WindowOrWorkerGlobalScope".

It seems that the two dfns being the same name is causing the problem. In particular, there are two problems:

  1. "Performance" title in section 5 is not orange (but fortunately links to it do work).
  2. The link to "Performance" in section 6 in readonly attribute Performance performance; is to the attribute instead of the interface (even if I try to add a data-link-for for "Performance").

Not sure if this is an issue with ReSpec or if there's a way to fix this?

bug

All 10 comments

It seems #1508 is related.

@saschanaz, Yeah :( Still not figured this out. Trying to find time to dig into it. I've got a bunch of conference talks next week, so right now super busy on those. Will try to look into in August unless anyone else can take it.

@sidvishnoi, did you see anything useful/helpful while you were investigating?

It is related to #1508 as @saschanaz mentioned and not a regression.

During some playing, I found keeping IDL case-sensitive resolves this. So,

By doing the above during investigation, I was able to to fix this issue. Although, I triggered another linking error (probably missed some case-sensitive conversion somewhere)

Fix didn't seem to work on the actual spec, tho it worked in our tests. Need to check what's going on.

Ok, so it's a bit better. At least the IDLType is linking, but the first dfn for Performance is not being matched.

@sidvishnoi, would you mind having another look and doing some more experimentation? I think this can be reduced down to a very test case. You just need an interface Performance {}; and a <dfn>Performance</dnf>, and another interface interface Conflict { attribute Performance performance; } and:

<section>
   <dfn>Performance</dfn> interface.
</section>
<section data-dfn-for="Conflict">
  <dfn>Conflict</dfn> interface.
  <dfn>performance</dfn> attribute.
</section> 

Okay. Had a play with this. I think it is time we make definitionMap case sensitive for IDL (it worked _almost_ well as I tried) as I think everything else will be a "workaround". Do we have some reason to not do it yet?

Minor update: Made it work much well after a few tweaks. Idea is to not make use of name or parent but use originalName and originalParent instead (and of course, fix core/utils@getDfnTitles).

No reason. What means do we have to reliably identify IDL?

What means do we have to reliably identify IDL?

We can check if dfn's term (textContent/data-lt) exist in some pre.idl. We might need to pre-process a Set of IDL terms. Not sure here. You and @saschanaz have more experience with IDL things.

Maybe just <dfn data-dfn-type=“idl”>Foo</dfn> for now, then we can make it smarter?

Was this page helpful?
0 / 5 - 0 ratings

Related issues

saschanaz picture saschanaz  ·  3Comments

marcoscaceres picture marcoscaceres  ·  3Comments

saschanaz picture saschanaz  ·  5Comments

noamr picture noamr  ·  3Comments

andrea-perego picture andrea-perego  ·  3Comments