iOS and Android crashes on start due to a simple class extend mistake

Steps to Reproduce
From a basic increment number flutter app run the code below.
import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
        visualDensity: VisualDensity.adaptivePlatformDensity,
      ),
      home: MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends ContentTabsWidget {
  MyHomePage({Key key, this.title}) : super(key: key);
  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends ContentTabsState<MyHomePage> {
  int _counter = 0;

  void _incrementCounter() {
    setState(() {
      _counter++;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'You have pushed the button this many times:',
            ),
            Text(
              '$_counter',
              style: Theme.of(context).textTheme.headline4,
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: Icon(Icons.add),
      ),
    );
  }
}

abstract class IBase {}

abstract class ContentTabsWidget
    extends BaseStatefulWidget<ContentTabsState, dynamic> {
  ContentTabsWidget({Key key}) : super(key: key);
}

abstract class ContentTabsState<W extends ContentTabsWidget>
    extends BaseState<W, dynamic> {}

abstract class BaseStatefulWidget<ST extends SuperState, T>
    extends SuperStatefulWidget<ST, T, IBase> {
  BaseStatefulWidget({Key key}) : super(key: key);
}

abstract class BaseState<W extends StatefulWidget, T>
    extends SuperState<W, T, IBase> {}

abstract class SuperStatefulWidget<S extends SuperState, T, B>
    extends StatefulWidget {
  SuperStatefulWidget({Key key}) : super(key: key);
}

abstract class SuperState<W extends StatefulWidget, T, B> extends State<W>
    with WidgetsBindingObserver {}

Expected results:
The app running normally
Actual results:
App crashes
In iOS this is the log output:
io.flutter.1.ui (9): EXC_BAD_ACCESS (code=1, address=0x0)
In Android this is the log output:
A/libc: Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0 in tid 14803 (1.ui), pid 14773
Fix:
Just replace the ContentTabsWidget definition with this:
abstract class ContentTabsWidget
    extends BaseStatefulWidget/*<ContentTabsState, dynamic>*/ {
  ContentTabsWidget({Key key}) : super(key: key);
}

This situation should never have happened, but the project in which I was working is big and several classes extending other were changed and there was the moment in which that <ContentTabsState, dynamic> took place… it took me several hours to find  the mistake… I was hoping that the dart-analyzer had warned me of such an error… or at least an error during building…
So my question
Why the dart analyzer allows that code and the build process completes successfully and then when the app starts a crash occurs?

[✓] Flutter (Channel beta, 1.20.0-7.2.pre, on Mac OS X 10.15.5 19F101, locale en-US)
• Flutter version 1.20.0-7.2.pre at /Users/user/Flutter/SDK
• Framework revision a2bde82fbd (7 weeks ago), 2020-07-18 15:16:35 -0700
• Engine revision 60b269d898
• Dart version 2.9.0 (build 2.9.0-21.2.beta)
[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.3)
• Android SDK at /Users/user/Android/SDK
• Platform android-R, build-tools 29.0.3
• ANDROID_HOME = /Users/user/Android/SDK
• Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
• Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b49-5587405)
• All Android licenses accepted.
[✓] Xcode - develop for iOS and macOS (Xcode 11.5)
• Xcode at /Applications/Xcode.app/Contents/Developer
• Xcode 11.5, Build version 11E608c
• CocoaPods version 1.9.3
[✓] Chrome - develop for the web
• Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
[✓] Android Studio (version 3.5)
• Android Studio at /Applications/Android Studio.app/Contents
• Flutter plugin version 44.0.1
• Dart plugin version 191.8593
• Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b49-5587405)

you can customize your analyzer

Hi @luis901101
Please try @iapicca 's suggestion, it does show errors when using the code sample, you just need to analyze more strict here
analysis_options.yaml.zip

  error • Missing type arguments for generic type 'SuperState<StatefulWidget, dynamic, dynamic>' • lib/main.dart:77:46 •
         implicit_dynamic_type
  error • Missing type arguments for generic type 'SuperState<StatefulWidget, dynamic, dynamic>' • lib/main.dart:85:46 •
         implicit_dynamic_type

2 issues found. (ran in 2.4s)

flutter doctor -v
[✓] Flutter (Channel beta, 1.21.0-9.2.pre, on Mac OS X 10.15.6 19G2021, locale
    en-GB)
    • Flutter version 1.21.0-9.2.pre at /Users/tahatesser/Code/flutter_beta
    • Framework revision 81a45ec2e5 (10 days ago), 2020-08-27 14:14:33 -0700
    • Engine revision 20a9531835
    • Dart version 2.10.0 (build 2.10.0-7.3.beta)

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
    • Android SDK at /Users/tahatesser/Code/sdk
    • Platform android-30, build-tools 30.0.2
    • ANDROID_HOME = /Users/tahatesser/Code/sdk
    • Java binary at: /Applications/Android
      Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build
      1.8.0_242-release-1644-b3-6222593)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 11.7)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 11.7, Build version 11E801a
    • CocoaPods version 1.9.3

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 4.0)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin version 49.0.2
    • Dart plugin version 193.7547
    • Java version OpenJDK Runtime Environment (build
      1.8.0_242-release-1644-b3-6222593)

[✓] VS Code (version 1.48.2)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.14.0

[✓] Connected device (4 available)
    • RMX2001 (mobile)   • EUYTFEUSQSRGDA6D                     • android-arm64
      • Android 10 (API 29)
    • iPhone 11 (mobile) • 73130414-6DF8-4E37-B9AF-F81FA0F9068B • ios
      • com.apple.CoreSimulator.SimRuntime.iOS-13-7 (simulator)
    • Web Server (web)   • web-server                           • web-javascript
      • Flutter Tools
    • Chrome (web)       • chrome                               • web-javascript
      • Google Chrome 85.0.4183.83

• No issues found!

Thank you both for your answers.
Yes with a customized analysis_options as you propose there are messages indicating the error... but the code loses a bit of flexibility.
I just think that the app crash is a result too excesive for the source of the error. I mean Ok, I did a mistake with the type management but that should be notified in some way… maybe at runtime in a red screen or something… but an app crash at start is somthing that makes me think of a native code error or something else… but not a type management error…

For instance if I update the _incrmenetCounter function with the following:
void _incrementCounter() {

    dynamic number = 1.5;
    String myNumber = number;

    setState(() {
      _counter++;
    });
  }

that will generate an error of type management when user press the increment button.
════════ (2) Exception caught by gesture ═══════════════════════════════════════════════════════════
type 'double' is not a subtype of type 'String'

Something similar is what I would expect to happen for the error that I mention at the beginning of the post

I agree, it would be too much hassle to go and find what went wrong

This is reproducible on the current engine master.  The crash happens during Dart_FinalizeLoading
Stack trace:
#0  0x00000000 in ?? ()
#1  0x90343e04 in dart::ClassFinalizer::CheckRecursiveType (cls=..., type=...,
    pending_types=0x8d26b2d0)
    at ../../third_party/dart/runtime/vm/class_finalizer.cc:341
#2  0x90344dc4 in dart::ClassFinalizer::FinalizeTypeArguments (cls=...,
    arguments=..., num_uninitialized_arguments=<optimized out>,
    pending_types=<optimized out>, trail=<optimized out>)
    at ../../third_party/dart/runtime/vm/class_finalizer.cc:637
#3  0x90344e2e in dart::ClassFinalizer::FinalizeTypeArguments (cls=...,
    arguments=..., num_uninitialized_arguments=<optimized out>,
    pending_types=<optimized out>, trail=<optimized out>)
    at ../../third_party/dart/runtime/vm/class_finalizer.cc:650
#4  0x9034437c in dart::ClassFinalizer::ExpandAndFinalizeTypeArguments (
    cls=..., type=..., pending_types=<optimized out>)
    at ../../third_party/dart/runtime/vm/class_finalizer.cc:501
#5  0x903445fa in dart::ClassFinalizer::FinalizeType (cls=..., type=...,
    finalization=<optimized out>, pending_types=0x8d26b2d0)
    at ../../third_party/dart/runtime/vm/class_finalizer.cc:750
#6  0x90344284 in dart::ClassFinalizer::ExpandAndFinalizeTypeArguments (
    cls=..., type=..., pending_types=<optimized out>)
    at ../../third_party/dart/runtime/vm/class_finalizer.cc:481
#7  0x903445fa in dart::ClassFinalizer::FinalizeType (cls=..., type=...,
    finalization=<optimized out>, pending_types=0x8d26b2d0)
    at ../../third_party/dart/runtime/vm/class_finalizer.cc:750
#8  0x90344284 in dart::ClassFinalizer::ExpandAndFinalizeTypeArguments (cls=..., type=..., pending_types=<optimized out>) at ../../third_party/dart/runtime/vm/class_finalizer.cc:481
#9  0x903445fa in dart::ClassFinalizer::FinalizeType (cls=..., type=..., finalization=<optimized out>, pending_types=0x8d26b2d0) at ../../third_party/dart/runtime/vm/class_finalizer.cc:750
#10 0x90343a00 in dart::ClassFinalizer::FinalizeTypesInClass (cls=...) at ../../third_party/dart/runtime/vm/class_finalizer.cc:1040
#11 0x903439be in dart::ClassFinalizer::FinalizeTypesInClass (cls=...) at ../../third_party/dart/runtime/vm/class_finalizer.cc:1030
#12 0x90343838 in dart::ClassFinalizer::ProcessPendingClasses () at ../../third_party/dart/runtime/vm/class_finalizer.cc:212
#13 0x9063ac32 in dart::Api::CheckAndFinalizePendingClasses (thread=0x8d2f7400) at ../../third_party/dart/runtime/vm/dart_api_impl.cc:411
#14 0x9065b0a2 in Dart_FinalizeLoading (complete_futures=<optimized out>) at ../../third_party/dart/runtime/vm/dart_api_impl.cc:5976
#15 0x8f99e476 in flutter::DartIsolate::LoadKernel (this=0xa8bb99c0, mapping=..., last_piece=true) at ../../flutter/runtime/dart_isolate.cc:344
#16 0x8f99e550 in flutter::DartIsolate::PrepareForRunningFromKernel (this=0xa8bb99c0, mapping=..., last_piece=true) at ../../flutter/runtime/dart_isolate.cc:371
#17 0x8f9b576c in flutter::KernelIsolateConfiguration::DoPrepareIsolate (this=0xa077ce98, isolate=...) at ../../flutter/shell/common/isolate_configuration.cc:50
#18 0x8f9b41fc in flutter::IsolateConfiguration::PrepareIsolate (this=0xa077ce98, isolate=...) at ../../flutter/shell/common/isolate_configuration.cc:24

A fix is under review: https://dart-review.googlesource.com/c/sdk/+/162583
I was able to verify it under flutter and the x86 emulator.


Copyright Footer

New Mockup
Please check assets/css/global.css, design-assets folder images, and figma files for updated style guides. Any new pull request should use the updated color, spacing, and sizing variables.
No Bootstrap or jQuery
Please refrain from adding Bootstrap or jQuery to the site. These pr's will be closed. They overwrite global styles. Vanilla CSS and JS is way better now anyways 😊
New Task:
What is the task
The copyright footer in the About page at https://keiko-corp.netlify.app/about.html needs a larger font. It has too small font size.
It can corrected with slight CSS modification.
Who is the task for?

[x] I created this task for me to complete, I will create a PR soon.
[ ] I created this task for someone else to claim.
[ ] I think this is a task that multiple people can do

Confirm all of the following:

[x] I have looked at all the issues currently available and this does not exist or overlap with another ticket

⚠ PLEASE ONLY SUBMIT A PR FOR THIS TASK IF THIS TASK WAS AVAILABLE FOR YOU TO CLAIM

I will work on this.


Change the command folder to Console

fix https://github.com/dunglas/DunglasActionBundle/issues/18

Thanks!


In inline math, remove the space at the end of snippets

In inline math, when a space is inserted before the closing dollar sign, the code is no longer read as a math equation. This causes snippets to stop working.
Solution: when a snippet is triggered in inline math, remove any spaces at the end of the replacement.

Added in 1.2.2

Just let me mention another solution: https://github.com/RyotaUshio/obsidian-inline-math
Using this plugin, you can keep staying in math mode while respecting the trailing whitespace.


Espresso: match with ID

I'm trying to fix the unstableness of SettingsActivityTest. I meant to have fixed it in #666, but it still sometimes breaks. Because it is not reproduced on my machine, I'm just trying something that might work. A recent example of failures without apparent reason is https://travis-ci.org/commons-app/apps-android-commons/builds/236649183
If this still does not work, it might be a better idea to remove SettingsActivityTest from the automated tests while I work on it.

Well maybe I had a wrong idea about it. I will give more time on it.


Battle Maps docs

Fix for #513

Fixed some of the examples/tests. Also provided a few false examples
Updated the Example solution to match the solution (the actual solution seems fine)
Run the examples as a moduledoc test

The last commit is a bit speculative. I saw it in a blog post once and always wanted to try it :smile:
It seems to only see changes when you recompile before running the tests.
So a developer workflow would be like mix clean && mix test which is a bit awkward (but could be automated).
However, it would work great in CI.
What do you think?

Looks like a test failed. Make sure to run mix format. There's also a mix bc script that runs a bunch of scripts related to the project. I don't think that's what's causing the issue but if the test still fails after formatting that's what I would try next.

Hmm, for some reason, there's still a mix format issue. If running mix format again doesn't work let me know and I can help debug. 🤔

Thank you!


Can't make it work with a flatpak Firefox from a flathub repo

I guess Firefox does not see installed 'tabsearchproviderconnector', and most likely it can be fixed adding some exclusions in Flatseal, but I can't figure out how. Would be great if someone will help me out. I absolutely love this extension.

Yes, sandboxed browsers can't see programs installed on host (https://github.com/flatpak/xdg-desktop-portal/issues/655).
There's workarround which creates hole in sandbox by allowing browser to run any executable on host system.
But cause it's very insecure, I won't list it here, sorry.


PS3 : HAT X- X+ Y- Y+ are buttons, not axes

Hello,
I could make my PS3 controller work on CNCjs with your gamepad pendant. Thank you.
There is just a problem with HAT buttons. Your gamepad.ts configuration file is considering them as Axes. It might be the case on most controller, I don't know. But on the PS3 Controller, X-, X+, Y- and Y+ are 4 differents buttons, not 2 axes.
So I can't use the hat, and Z axe can only be controlled with the Y- Y+ Hat buttons.
Can you fix it, or give me a way to make it work anyway ?
Thank you

  // This is the mapping for the PS3 controller
  //This controller has 6 axes (0 to 5) and 17 buttons (0 to 16)
  'Sony PLAYSTATION(R)3 Controller': {

    'buttons': {
      '3': 'KEYCODE_BUTTON_X',
      '0': 'KEYCODE_BUTTON_A',
      '1': 'KEYCODE_BUTTON_B',
      '2': 'KEYCODE_BUTTON_Y',
      '4': 'KEYCODE_BUTTON_L1',
      '5': 'KEYCODE_BUTTON_R1',
      '6': 'KEYCODE_BUTTON_LTRIGGER', // note: ALSO activates the axis.
      '7': 'KEYCODE_BUTTON_RTRIGGER', // note: ALSO activates the axis.
      '8': 'KEYCODE_BACK',
      '9': 'KEYCODE_BUTTON_START',
      '11': 'KEYCODE_BUTTON_THUMBL',
      '12': 'KEYCODE_BUTTON_THUMBR',
      '10': 'KEYCODE_HOME',
      '13': 'KEYCODE_BUTTON_HAT_X_PLUS',
      '14': 'KEYCODE_BUTTON_HAT_X_MINUS',
      '15': 'KEYCODE_BUTTON_HAT_Y_PLUS',
      '16': 'KEYCODE_BUTTON_HAT_Y_MINUS'
    },

I added 4 keys (13, 14, 15 and 16) accordingly to the PS3 controller HAT direction buttons. But of course, they won't be executed as the code doesn't know them.


[CO-336] Prevent zero-coin payment test failure

This fixes a wallet integration test failure.
Cherry picked from @parsonsmatt 's branch.
Description
Linked issue

Type of change

[ ] 🐞 Bug fix (non-breaking change which fixes an issue)
[ ] 🛠 New feature (non-breaking change which adds functionality)
[ ] ⚠ Breaking change (fix or feature that would cause existing functionality to change)
[ ] 🏭 Refactoring that does not change existing functionality but does improve things like code readability, structure etc
[ ] 🔨 New or improved tests for existing code
[ ] ⛑ git-flow chore (backport, hotfix, etc)

Developer checklist

[ ] I have read the style guide document, and my code follows the code style of this project.
[ ] If my code deals with exceptions, it follows the guidelines.
[ ] I have updated any documentation accordingly, if needed. Documentation changes can be reflected in opening a PR on cardanodocs.com, amending the inline Haddock comments, any relevant README file or one of the document listed in the docs directory.

Testing checklist

[ ] I have added tests to cover my changes.
[x] All new and existing tests passed.

QA Steps

Screenshots (if available)

Well, you squash one bug and another shows up!
Failures:

  integration/Util.hs:95:5:
  1) Transactions posted transactions appear in the index
       predicate failed on: Left (ClientWalletError (UnknownError {weMsg = "Request error (Cannot send transaction: Transaction creation error: not enough money, need 155382 coin(s) more)"}))

  integration/Util.hs:95:5:
  2) Transactions asset-locked wallets can receive funds and transactions are confirmed in index
       predicate failed on: Left (ClientWalletError (UnknownError {weMsg = "Request error (Cannot send transaction: Transaction creation error: Attempted to send 0 money)"}))

Whack a mole!

@erikd Can I close this PR?


Add LPS35HW code, also supporting LPS33HW

Add support for Water Resistant Pressure sensor family LPS3xHW

Two LPS35HW tested on same bus with QTPY ESP32S2.

@tyeth  Looks good to merge, I like how the driver is a generic LPSx object. I'll bring this in.


net: lwm2m: add support for building with POSIX API

If POSIX_API option is enabled, use the relevant POSIX headers and do not select NET_SOCKETS_POSIX_NAMES.

That's one way to address the matter, but maybe a cleaner solution would be to do something like we did for MQTT, i.e. drop POSIX dependency and use zsock_ API directly? There's the change for reference fff28ad

Similar flagging has been done at least in websocket, so I though this was the way to. I agree that it's not very nice, though. If using zsock_ directly is preferable, I can modify the PR.

@rlubos Pushed a new commit which uses the zsock_ functions instead. Ping @SeppoTakalo.

Needed to rebase.


The application crashes when the component is unmounted, caused by the fact that DeviceEventEmitter does not recognize that it has the removeListener method.

Hi! 👋
Firstly, thanks for your work on this project! 🙂
Today I used patch-package to patch<EMAIL_ADDRESS>for the project I'm working on.
DeviceEventEmitter.removeListener(

"didUpdateDimensions",
this.handleDimensionsUpdate
) => returns an error removeListener is not a function.

Here is the diff that solved my problem:
diff --git a/node_modules/react-native-modal/src/index.js b/node_modules/react-native-modal/src/index.js
index e4ca746..c8e154a 100644
--- a/node_modules/react-native-modal/src/index.js
+++ b/node_modules/react-native-modal/src/index.js
@@ -105,7 +105,8 @@ class ReactNativeModal extends Component {
     deviceWidth: Dimensions.get("window").width,
     deviceHeight: Dimensions.get("window").height,
     isSwipeable: this.props.swipeDirection ? true : false,
-    pan: null
+    pan: null,
+    eventEmitter: null
   };

   isTransitioning = false;
@@ -163,17 +164,18 @@ class ReactNativeModal extends Component {
     if (this.state.isVisible) {
       this.open();
     }
-    DeviceEventEmitter.addListener(
+    const eventEmitter = DeviceEventEmitter.addListener(
       "didUpdateDimensions",
       this.handleDimensionsUpdate
     );
+    this.setState({eventEmitter})
   }

   componentWillUnmount() {
-    DeviceEventEmitter.removeListener(
-      "didUpdateDimensions",
-      this.handleDimensionsUpdate
-    );
+    if(this.state.eventEmitter) {
+      this.state.eventEmitter.remove()
+    }
+
   }

   componentDidUpdate(prevProps, prevState) {

This issue body was partially generated by patch-package.

I had the same problem but updating to the latest version fix it for me.

Im on the latest version and i'm facing the same problem

I am also having this issue on the latest version, and it's crashing the app :(


Downloading html instead of display it in the browser

Reproduce steps:

Open my blog: blackgun.github.io
Click an blog

Expected result: open my article in the browser
Actual result: downloading a html file
My env:

Mac OS X 10.11.3
Chrome Version 48.0.2564.97 (64-bit)
hubpress: forked today, https://github.com/blackgun/blackgun.github.io

found the reason, the = {article name} can't be Chinese..

Please read :hp-alt-title: 设定第二名称 section on readme

Hi @blackgun, i hope that the answer of @hinaloe can help you.
Thank you @hinaloe :smile:


former pp2fpConf_fp_server stops still with meaningless error message

Sorry, but
Error occurred - Fail to initialize!
Error occurred - Argument is invalid!
is nearby as meaningless as the message before the patch. The user has no clou whats going wrong and what can he do to get it to work.
The errormessage should explain that arguments are needet and which arguments that can be. And, when really a wrong argument is in the commandline, it could say that its invalid.
Originally posted by @krater in https://github.com/opend-connect/openD/issues/11#issuecomment-463853344

Has there been an improvement on this perspective in 1.0.7? Please comment.

No, there is no update about this in 1.0.7.


Create json files for real estate developer & real estate investor user profiles

Bob the builder & Alice the investor


Loading - Error handling for PageValidator

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
Currently we only show loading indication for the validator page. Even if the loading failed. We should show an error when the loading failed.
Describe the solution you'd like
A clear and concise description of what you want to happen.
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Add any other context or screenshots about the feature request here.

Done in #2080

Closed via #2080


useFullscreen ref consistency

The demo didn't use the video option. I added this in my first commit and got a TypeScript error:
Argument of type '{ onClose: () => void; video: null; }' is not assignable to parameter of type 'FullScreenOptions | undefined'.
  Type '{ onClose: () => void; video: null; }' is not assignable to type 'FullScreenOptions'.
    Types of property 'video' are incompatible.
      Type 'null' is not assignable to type 'HTMLVideoElement | undefined'.

In the second commit the video option expects a video ref instead of a video element which makes this hook work without TypeScript errors. It's also more consistent to accept a ref in the options as the first parameter is already ref.

:tada: This PR is included in version 7.1.1 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Update 4.10 clusterpools to latest RC

Summary of Changes
In hopes of stable resume on rc2, let's update the 4.10 pools to rc2.

/lgtm


Update entrypoint.sh

Makeflow calls on Work Queue at port 6000.

Could you submit the PR to the singularity branch?


[Errorlog]  Add delete test case in errorlog

Test case

[x]   Create elog and delete, verify if it is deleted
[x]   Create multiple elog and delete all and verify if its deleted
[x]   Create 2 elogs and delete 1 and verify its deleted and other elog exist

@swe12345 is working on it..

https://gerrit.openbmc-project.xyz/#/c/4124/


Missing required config value at 'grafana.domain'

Stack Trace:
Error: Missing required config value at 'grafana.domain'
    at ConfigReader.getString (webpack-internal:///../../node_modules/@backstage/config/dist/index.esm.js:183:13)
    at Object.factory (webpack-internal:///../../node_modules/@k-phoen/backstage-plugin-grafana/dist/esm/index-b703a46a.esm.js:81:27)
    at ApiResolver.load (webpack-internal:///../../node_modules/@backstage/core-app-api/dist/index.esm.js:215:25)
    at ApiResolver.get (webpack-internal:///../../node_modules/@backstage/core-app-api/dist/index.esm.js:200:17)
    at useApi (webpack-internal:///../../node_modules/@backstage/core-plugin-api/dist/index.esm.js:99:25)
    at Dashboards (webpack-internal:///../../node_modules/@k-phoen/backstage-plugin-grafana/dist/esm/index-b370840e.esm.js:53:88)
    at renderWithHooks (webpack-internal:///../../node_modules/@hot-loader/react-dom/cjs/react-dom.development.js:14804:18)
    at mountIndeterminateComponent (webpack-internal:///../../node_modules/@hot-loader/react-dom/cjs/react-dom.development.js:17483:13)
    at beginWork (webpack-internal:///../../node_modules/@hot-loader/react-dom/cjs/react-dom.development.js:18597:16)
    at HTMLUnknownElement.callCallback (webpack-internal:///../../node_modules/@hot-loader/react-dom/cjs/react-dom.development.js:189:14)

However, in my app-config.yaml I have:
proxy:
  '/test':
    target: 'https://example.com'
    changeOrigin: true
  '/pagerduty':
    target: https://api.pagerduty.com
    headers:
      Authorization: Token token=${PAGERDUTY_TOKEN}
  '/grafana/api':
    # May be an internal DNS
    target: https://grafana.mycompany.dev
    headers:
      Authorization: Bearer ${GRAFANA_TOKEN}

grafana:
  # Publicly accessible domain
  domain: https://grafana.mycompany.dev

Do I need to set the domain somewhere else?

same from my side..don't know that could be happening

I found the issue, posting here the workaround in case help others.

I found the issue, posting here the workaround in case helps others.

I found the issue, posting here the workaround in case it helps others.
The problem is: config visibility is defined as frontend type, so passing the value in the app-config file seems to not work in this plugin for some reason. changing visibility to backend seems to solve it. It is not clear why, as according to backstage docs, when setting frontend, both frontend and backend methods should work.
This config definition can be override in your backstage setup by adding this file config.d.ts under /plugins folder and setting visibility to backend.
export interface Config {
    grafana: {
        /**
         * Domain used by users to access Grafana web UI.
         * Example: https://monitoring.eu.my-company.com/
         * @visibility backend
         */
        domain: string;

        /**
         * Path to use for requests via the proxy, defaults to /grafana/api
         * @visibility backend
         */
        proxyPath?: string;
    }
}

I tried setting up the plugin on a fresh Backstage instance (newly generated using npx @backstage/create-app) and didn't have any issue.
Is there any chance anyone having troubles can publish a minimalist Backstage app that doesn't work as it should?

In case it helps anyone else - I had this issue because I had installed the plugin as a backend dependency, not a frontend one

Closing this since it's an old issue


License?

As it is currently, poomf.sh is a proprietary code, since that's what missing license means.
I think that it's not the desired state of things?
If you are not sure which one to pick, there's https://tldrlegal.com/
Depending on what you want, you most likely may want to pick one of "main" licenses:

MIT
BSD
LGPL-2.1

Or, if you want my biased opinion, just simply go with GPLv3 :3
CC-ing contributors listed by GH (sorry if I missed someone):
@Epictek
@ooploopl-
@Sarkynin
@arianon
@DanielFGray
@JSchilli1

Thanks for the heads up!


Investigate VAO support

On some mobile devices apparently they can be much faster than manually binding vertex attributes.

We have some serious performance issues in Safari, and adding support for VAOs may be the solution to that problem.

Is there anyway we can prioritize this? I'd love to make this happen!

@mikolalysenko i'll have a PR up shortly!

@jwerle I can help contribute to your effort here if you need a hand. I unfortunately just noticed this issue after trying a bunch of hacks to improve mobile performance.
Looks like you had another branch in the works https://github.com/regl-project/regl/pull/411#issuecomment-323074236 Let me know if you need another pair of eyes or would like to hand it off.

I'd love another pair of eyes. We're actually using a fork of regl at
github.com/littlstar/regl that contains this work. I closed the PR because
it didn't seem likely to get merged in anymore
On Thu, Sep 14, 2017, 23:16 Kev Zettler<EMAIL_ADDRESS>wrote:

@jwerle https://github.com/jwerle I can help contribute to your effort
here if you need a hand. I unfortunately just noticed this issue after
trying a bunch of hacks to improve mobile performance.
Looks like you had another branch in the works #411 (comment)
https://github.com/regl-project/regl/pull/411#issuecomment-323074236
Let me know if you need another pair of eyes or would like to hand it off.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/regl-project/regl/issues/312#issuecomment-329668834,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ABZSvSLBdeJEl4JSoaycaxAQF7b9RzOGks5siewGgaJpZM4JzzMu
.


imgui combo box style

how to change combo box style like this
thanks!

Hey @chris0306, I think you've got the wrong project. This project is specifically for a toggle control. You probably want the Dear ImGui project proper.


Update keychain documentation

Changed hierarchy
Updated warden-kms
Updated cli-chain

Summary by CodeRabbit

Documentation

Introduced a comprehensive guide for building a Keychain application with the Go programming language and Keychain SDK.
Updated documentation for CLIChain with detailed instructions on usage, installation, and error handling.
Enhanced WardenKMS documentation, providing in-depth information on functionalities, dependencies, and configuration.
Added a new document to guide users in preparing a chain for Keychain application development.
Updated keychain example documentation, changing the label from "Examples" to "Implementation" for clarity.
Standardized syntax highlighting in local chain testing documentation for improved clarity.
Refined validator creation documentation with personalized placeholders for better user experience.

how is this PR related to #706? I also see that the title says "update keychain docs" but in the commits there are other files changed too

how is this PR related to #706? I also see that the title says "update keychain docs" but in the commits there are other files changed too

Thanks for pointing it out @Pitasi. Seems like other files were also added to this as part of review. Not sure if this is my mistake or @ijonele added it while reviewing.
As for the relation with SDK, this PR ie #692 was meant for entire Build a Keychain Section - https://docs.wardenprotocol.org/build-a-keychain and #706 was meant only for SDK section.


External Keyboard Brightness Control Not Working on All Monitors

Issue: External Keyboard Brightness Control Not Working on All Monitors
Pre-Submission Checklist

[X] Checked for existing issues
[X] Reviewed the wiki
[X] Updated to the latest MonitorControl version

Bug Description
Using the external keyboard's Control + Pause shortcut fails to adjust the brightness on all connected monitors.
Shortcut Keys:

Increase Brightness: Control/Fn + PAUSE (F14)
Decrease Brightness: Control/Fn + SCRLK (F15)

Reproduction Steps

Attempt to adjust brightness with the external keyboard using the above shortcuts.
Only the MacBook Pro's native screen responds; external monitors remain unaffected.

Expected Outcome
All monitors should respond to brightness adjustment shortcuts.
System Information

macOS: Sonoma 14.4
Mac Model: MacBook Pro 16" 2021 M1 Pro
MonitorControl Version: 4.2.0
Monitors: One external, one internal
Apple Silicon: Yes

Same problem, but with standard brightness control buttons and an external keyboard. It used to work fine before with external keyboards.

I have the same issue. Adjusting the brightness with the slider on screen works on all monitors however when using the external keyboard only the main monitors adjusts its brightness.

Experiencing the same issue on macOS 14.5. Think it started with a recent upgrade to 14.4 but prior to that I was on 14.1 where the external keyboard would control the screen where the mouse pointer was. The integrated keyboard still does this but the external keyboard only controls the integrated screen.

same issue here.

+1 Using 4.2.0 build 7048 on Intel mbp with Sonoma 14.7 and external Apple (small) keyboard. Laptop brightness touch bar control works for both monitors and external only controls the one where mouse is.

You probably need to fix accessibility permissions.

I am not sure whether this is still an issue with the current version. Anyway, with a PC keyboard (from the description it seems like this is involved) I simply recommend using a custom keyboard shortcut.


Its is working only when Selenium-standalone started as separate activity ,it doesn't works with Selenium-standalone service or combination gulp task

When i tried to use this module it is working only when i start the selenium-standalone as separate task.
If it tried to work with Selenium service or Combination gulp task it is not working
Facing below error :
UnhandledPromiseRejectionWarning: Error: connect ECONNREFUSED <IP_ADDRESS>:9222
Not proceeding further

Please have a look at this project showing how to use the devtools service with the latest version of WebdriverIO: https://github.com/christian-bromann/webdriverio-performance-testing

The above example is for v5. I am facing the above issues in v4.

I am facing the above issues in v4.

We recommend to update as no one is maintaining v4 anymore. You are also free to propose a PR and I can make a release.

Sure I will try


Illegal hardware instruction (core dumped)  pnpm dev

Problem
I've clonned the repo, of course, I ran pnpm install but when I run the project with pnpm dev or pnpm run dev it throws an error.
Output
><EMAIL_ADDRESS>dev /path/to/my/dev/dir/astro-landing-page
> astro dev

[1]    11789 illegal hardware instruction (core dumped)  pnpm dev

I don't know what is happening. :(
I tried using npm or yarn, but the same...

Possibly a Node.js issue. I would try different versions of Node. You can easily do this with nvm. Make sure to delete node_modules and then run npm install again. Hope that helps!

Closing this now. Feel free to re-open if you have any update.


snapcast: 0.14.0 -> 0.15.0

Motivation for this change
Package update. I have a separate nixos module for this but let's start with the package.
Cc: @fpletz
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[x] Fits CONTRIBUTING.md.

Success on aarch64-linux (full log)
Attempted: snapcast
Partial log (click to expand)
-- Installing: /nix/store/0fzk5wb1250w99l8s2j1zc6424jrm0jm-snapcast-0.15.0/bin/snapclient
post-installation fixup
shrinking RPATHs of ELF executables and libraries in /nix/store/0fzk5wb1250w99l8s2j1zc6424jrm0jm-snapcast-0.15.0
shrinking /nix/store/0fzk5wb1250w99l8s2j1zc6424jrm0jm-snapcast-0.15.0/bin/snapclient
shrinking /nix/store/0fzk5wb1250w99l8s2j1zc6424jrm0jm-snapcast-0.15.0/bin/snapserver
strip is /nix/store/p9akxn2sfy4wkhqdqa3li97pc6jaz3r1-binutils-2.30/bin/strip
stripping (with command strip and flags -S) in /nix/store/0fzk5wb1250w99l8s2j1zc6424jrm0jm-snapcast-0.15.0/bin
patching script interpreter paths in /nix/store/0fzk5wb1250w99l8s2j1zc6424jrm0jm-snapcast-0.15.0
checking for references to /build in /nix/store/0fzk5wb1250w99l8s2j1zc6424jrm0jm-snapcast-0.15.0...
/nix/store/0fzk5wb1250w99l8s2j1zc6424jrm0jm-snapcast-0.15.0

Success on x86_64-linux (full log)
Attempted: snapcast
Partial log (click to expand)
-- Installing: /nix/store/0bv12rpz77j9kddaps1qpligj7gmm7bg-snapcast-0.15.0/bin/snapclient
post-installation fixup
shrinking RPATHs of ELF executables and libraries in /nix/store/0bv12rpz77j9kddaps1qpligj7gmm7bg-snapcast-0.15.0
shrinking /nix/store/0bv12rpz77j9kddaps1qpligj7gmm7bg-snapcast-0.15.0/bin/snapclient
shrinking /nix/store/0bv12rpz77j9kddaps1qpligj7gmm7bg-snapcast-0.15.0/bin/snapserver
strip is /nix/store/vcc4svb8gy29g4pam2zja6llkbcwsyiq-binutils-2.30/bin/strip
stripping (with command strip and flags -S) in /nix/store/0bv12rpz77j9kddaps1qpligj7gmm7bg-snapcast-0.15.0/bin
patching script interpreter paths in /nix/store/0bv12rpz77j9kddaps1qpligj7gmm7bg-snapcast-0.15.0
checking for references to /build in /nix/store/0bv12rpz77j9kddaps1qpligj7gmm7bg-snapcast-0.15.0...
/nix/store/0bv12rpz77j9kddaps1qpligj7gmm7bg-snapcast-0.15.0

@GrahamcOfBorg build snapcast

Success on aarch64-linux (full log)
Attempted: snapcast
Partial log (click to expand)
/nix/store/0fzk5wb1250w99l8s2j1zc6424jrm0jm-snapcast-0.15.0

No attempt on x86_64-darwin (full log)
The following builds were skipped because they don't evaluate on x86_64-darwin: snapcast
Partial log (click to expand)

a) For `nixos-rebuild` you can set
  { nixpkgs.config.allowUnsupportedSystem = true; }
in configuration.nix to override this.

b) For `nix-env`, `nix-build`, `nix-shell` or any other Nix command you can add
  { allowUnsupportedSystem = true; }
to ~/.config/nixpkgs/config.nix.

Success on x86_64-linux (full log)
Attempted: snapcast
Partial log (click to expand)
-- Installing: /nix/store/0bv12rpz77j9kddaps1qpligj7gmm7bg-snapcast-0.15.0/bin/snapclient
post-installation fixup
shrinking RPATHs of ELF executables and libraries in /nix/store/0bv12rpz77j9kddaps1qpligj7gmm7bg-snapcast-0.15.0
shrinking /nix/store/0bv12rpz77j9kddaps1qpligj7gmm7bg-snapcast-0.15.0/bin/snapclient
shrinking /nix/store/0bv12rpz77j9kddaps1qpligj7gmm7bg-snapcast-0.15.0/bin/snapserver
strip is /nix/store/vcc4svb8gy29g4pam2zja6llkbcwsyiq-binutils-2.30/bin/strip
stripping (with command strip and flags -S) in /nix/store/0bv12rpz77j9kddaps1qpligj7gmm7bg-snapcast-0.15.0/bin
patching script interpreter paths in /nix/store/0bv12rpz77j9kddaps1qpligj7gmm7bg-snapcast-0.15.0
checking for references to /build in /nix/store/0bv12rpz77j9kddaps1qpligj7gmm7bg-snapcast-0.15.0...
/nix/store/0bv12rpz77j9kddaps1qpligj7gmm7bg-snapcast-0.15.0


Prettier configuration not applied

Create the following files

.prettierrc
{
    "semi": false,
    "singleQuote": false
}

test.js
/* eslint-disable */
const options = {
  first: 'hello, world',
  second: true,
  internationalizing: true,
};

export { options };

Run "Format Document With..." command
Choose "VSCode Prettier ESLint"

Expected: File formatted with double quotes and no semi-colon
Actual: File formatted with single quotes and with semi-colon

No, I did not get any output in the Output panel. Here is a link to the repository with all the files. https://github.com/idahogurl/prettierrc-example

@idahogurl My bad ...
I didn't add prettier-eslint as a dependency to the README. I don't want to bundle prettier-eslint into the extension. I want to keep it as slim as possible.
I updated the README and published a new version: v1.1.2
This version now throws error if the extension is unable to resolve prettier-eslint. Install the package, reload VSCode and then it should work.
Could you test this please? Thank you

It is now working. Going to close this issue.


example for back-end?

Could you elaborate and be more specific?

would you like to add example or new repo like canvas_ity_opengl-bind or canvas_ity_xxx-bind ? :)


Receiving events without data

Description
dataTask stream would receive event with event only without any data when data is present. After investigation I found out that SessionDelegate would pass only part of data with event, separating response from the server to several didReceiveData calls. Sometimes SessionDelegate would pass full block, then processing of the message is correct.
To Reproduce
I am communicating with java-spring SSE server on localhost, I can share server with instructions to run it if needed
Steps:

Open connection
Observe event stream
Receive event
Received event contain event type but does not contains any data

Expected behavior
Library would cache data to the buffer and parse event only when complete event is received.
Steps:

Open connection
Observe event stream
Receive event
Received event contains data

Additional context

Platform: iOS 18.1
EventSource version: 0.1.1

Thanks for taking your time to implement this library, integration was super easy. I can try to implement caching data myself and create a pull request.

Exactly! I will add example of this issue later

This behaviour is shown in parseSeparatedMessage test in 3848ea4ce31bb8a05917827380e8dfa894856bdd

Fixed in #21


Create a Safe Rust Interface

https://doc.rust-lang.org/book/ffi.html

@9prady9 have you ensured  there are no unsafe bindings calls?

@jramapuram the functions i added so far, i made sure to wrap them with unsafe blocks inside the rust wrapper functions. I can't say i am 100% certain, but based on what i read so far on FFI for rust, it seems to be correct. This is what i mostly followed.

Yup, you are right! This should be fine :)


gh-pages branch needs vent/assets/catalog/parsed_tool_list.js updated with tools in https://github.com/cyberreboot/vent-plugins

@cglewis Will work on this


KNN lifting (Pointcloud to Graph) with New dataset MNIST

Main changes:

[x] implement graph to point cloud lifting
[x] add point cloud dataset

[x] add MNIST dataset (2D point cloud)

With details:

[x] update readme.md with additional torch_vision package (MNIST dataset)

[x] update github action test_codebase and test_tutorials with additional torch_vision package

[x] add mnist_to_pointcloud function in data/utils/utils.py

[x] update modules/data/load/loaders.py with additional mnist_to_pointcloud function

[x] update modules/data/utils/custom_dataset with specific repr for different dataset.

[x] add file configs/dataset/MNIST.yaml for MNIST dataset

[x] add new plot_point_cloud function in modules/utils/utils.py for visualization

[x] add file transforms/liftings/pointcloud2graph/knn_lifting.py for KNN lifting

[x] update TRANSFORMS in modules/transforms/data_transform.py with additional GraphKNNLifting

[x] add file modules/graph/gcn.py

[x] add file config/models/gcn.yaml

[x] add example in tutorial/pointcloud2graph/knn_lifiting.ipynb

Tutorial provided at notebook
from point cloud

to

by KNN lifting.
NOTE:
additional torch_vision package is required to get MNIST dataset.

Hello @cshjin! Thank you for your submission. As we near the end of the challenge, I am collecting participant info for the purpose of selecting and announcing winners. Please email me (or have one member of your team email me) at<EMAIL_ADDRESS>so I can share access to the voting form. In your email, please include:

your first and last name (as well as any other team members)
the title of the method you implemented
the input domain of the method you implemented
the output domain of the method you implemented
your pull request number (#19)

Before July 12, make sure that your submission respects all Submission Requirements laid out on the challenge page. Any submission that fails to meet this criteria will be automatically disqualified.


GH-33742: [Python] Address docstrings in Data Types classes

Rationale for this change
Ensure docstrings for Data Types Classes have an Examples section.
What changes are included in this PR?
Docstrings examples are added.
Are these changes tested?
Yes, with python -m pytest --doctest-cython python/pyarrow

Closes: #33742

@danepitkin @jorisvandenbossche this is ready for review if you have some time for it.


CURL -f post image convert to python not worked

curl -X POST "http://<IP_ADDRESS>:31070/model/predict" -H "Content-Type: multipart/form-data" -F<EMAIL_ADDRESS>convert to python:
import requests
headers = {
'Content-Type': 'multipart/form-data',
}
files = {
'image': ('me.jpg', open('me.jpg', 'rb')),
}
response = requests.post('http://<IP_ADDRESS>:31070/model/predict', headers=headers, files=files)
the python code not worked ,
response :
400 bad request

Try commenting out the Content-Type line, this is probably the same issue as #248


Service Worker of CRA not working offline if query/params has a dot (.)

I experience a problem with Service Worker of CRA if the query/params consists of a dot (.) For example, https://www.example.com/?q=2.1_something_like_this
The website would not work offline, but if you remove the dot, if will work again.
How do I fix this without changing the parameters or ejecting?

Please fill in the issue template. "Not working" is not a useful bug report.

Couldn't reproduce in a normal setup.


Add possibility skip "change" event after "add", "remove", "removeAll

…" methods

Hi, first of all thx for great lib.
Sometimes we need to disable 'change' event because it may trigger our handlers many times if we 'add' many values sequentially. Better to have ability disable 'change' event and manage it outside of lib code.

+1 for this.

@wawanawna Thanks for the PR! Could you add some test support for this though please?

Hello, thx for quick response. Added test.


官网上传Upload组件点击不出现文件上传弹框

Describe the bug
点击官网upload组件，没有任何反应，不会出现文件上传弹框，11月27日上午还正常，下午就异常了
Steps to reproduce
直接打开官网（https://www.naiveui.com/zh-CN/light/components/upload），随意点击演示中的上传文件按钮皆可复现
Link to minimal reproduction
https://www.naiveui.com/zh-CN/light/components/upload
System Info
官网问题

Used Package Manager
npm
Validations

[X] Read the Contributing Guidelines.
[X] Read the docs.
[X] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.
[X] Check that this is a concrete bug. For Q&A open a GitHub Discussion.
[X] The provided reproduction is a minimal reproducible example of the bug.

Provide a based on CodeSandbox or stackblitz `s Minimal  Reproducible Example
No recurrence, open again if there is a problem,


Sample Test where ValidatedMethod throws an error

Could you provide a sample test where ValidatedMethod throws a validation error from SimpleSchema? I have tried a bunch of different combinations of expect and assert, and I cannot seem to make it work.

Sure, I'll give it a look :)


Add dose sequence column

This adds a new column to vaccination records that will capture the dose sequence. This is required for the DPS export where we need to include the dose sequence.
I've decided to make the field non-optional for data integrity, although it does mean that we have to (until an interface is built) assume it's always a value of 1. For the NIVS import a follow up PR will be raised to correctly get this value from the CSV file. For the interface we've got a design ticket in the backlog.
I've decided to do this explicitly in the code rather than with a default value to ensure that we aren't accidentally creating vaccination records elsewhere in the system and not recording the dose sequence.
An alternative to this could be to make this field null, but it introduces a number of data integrity risk:

it would be possible to create and store vaccination records in the database without a dose sequence
for Flu (or any vaccine where we only have one dose sequence) we would want to ensure we're not storing a combination of null and 1 values

After discussing with @benilovj we think this will need to be nullable in the database (to handle draft records) so I'll amend the PR (temporarily moving it back to draft).

Does the fact that the tests didn't catch this mean we're missing coverage? Or do we not have the functionality that creates a vaccination record with a null dose sequence yet?

We don't have the functionality to record this yet in the service. There is a design ticket in the backlog although this has now been added to the prototype.
@benilovj It looks like the design for the prototype assumes a dose sequence of 1, unless the user changes it before saving the vaccination record, or when editing an existing record. Therefore, in the end I think it is safe for this field to be not nullable - what do you think?

@thomasleese

Therefore, in the end I think it is safe for this field to be not nullable - what do you think?

Yes I agree


add REVIEW_IN_PROGRESS color support

REVIEW_IN_PROGRESS is a CloudFormation status which shows when a new CloudFormation stack is being created from a change set. REVIEW_IN_PROGRESS did not previously have a color associated with it, so it was assigned the default color. In the AWS console, REVIEW_IN_PROGRESS is colored the same as other *_IN_PROGRESS statuses, so I included it in the warn regEx.

cc @obazoud @hoegertn


outerHTML should not be modified

Nice script, but I advice against modifying innerHTML and outerHTML since they do not create element nodes/classes properly [citation needed]; innerHTML therefore should not be used to create nodes, it should be reserved, for instance, for the text contents of a paragraph (<p>). Strangely, a lot of websites (including AIM) do that and so browsers let these "problems" through when they are included in page JS (Chromium) or anywhere (Firefox, since there is no difference between page JS and browser JS [citation needed]).
I won't touch your script since, well, it is yours; However, the problem can be fixed (in theory) like this:
menu.id = "userscript-search-by-image"; menu.type = "context";
So on and so forth. For menuitem tags, create them using document.createElement().
I'd like to hear your thoughts on the matter.

fixed by 0f007def7d6b8d35ed75aabdf2a0a2a8e5e232ce


Fix #2675: Avoid unnecessary IIFEs in FunctionEmitter

Arguably, allowing all pure expressions might be a bit extreme, as the params could be arbitrarily duplicated.

Arguably, allowing all pure expressions might be a bit extreme, as the params could be arbitrarily duplicated.

Arguably, allowing all pure expressions might be a bit extreme, as the params could be arbitrarily duplicated.

Yes, that's too much. We can only do this for VarRefs and Literals. Anything else, even if pure, can have some computational cost, and we have no right to duplicate it. It's not just the lexical copies, but every time the function is invoked they would have to be recomputed.
For anything else, we can store them in a synthetic local variable first.
However, there is a bigger issue: even references to local vals cannot always be used like this. The problem is that they will become vars in JavaScript, and vars have a function scope. So when in the IR we have something like
var i: int = 0
while (i != 5) {
  val s: string = i.toString()
  functions.push((arrow-lambda<s2: string = s>() = {
    println(s2)
  ))
  i += 1
}

in JavaScript, the val s will become a var s, which will have a single identity for the duration of the function. That means that the same variable will be captured by the various functions, and mutated in each loop. Essentially it is as if it were written as
var i = 0;
var s, s2;
while (i !== 5) {
  s = i.toString();
  s2 = s;
  functions.push(() => {
    println(s2);
  });
  i += 1;
}

which is completely wrong.
We must maintain a Set[LocalIdent]s that are safe to capture, as a well as a inLoop: Boolean in the environment. Once in a loop, no new identifier can ever be captured, including synthetic ones. For anything that comes up inside a loop, we must use the old mechanism of passing it through an IIFE. If we're not inside any loop, we can either directly reuse the val, or store it in a synthetic val.
(Of course, all this dance isn't required with avoidLetConst = false, since lets and consts have a correct scope. But that's not the default anymore so there's probably no need to care about that use case.)

Arguably, allowing all pure expressions might be a bit extreme, as the params could be arbitrarily duplicated.

Yes, that's too much. We can only do this for VarRefs and Literals. Anything else, even if pure, can have some computational cost, and we have no right to duplicate it. It's not just the lexical copies, but every time the function is invoked they would have to be recomputed.
For anything else, we can store them in a synthetic local variable first.
However, there is a bigger issue: even references to local vals cannot always be used like this. The problem is that they will become vars in JavaScript, and vars have a function scope. So when in the IR we have something like
var i: int = 0
while (i != 5) {
  val s: string = i.toString()
  functions.push((arrow-lambda<s2: string = s>() = {
    println(s2)
  ))
  i += 1
}

in JavaScript, the val s will become a var s, which will have a single identity for the duration of the function. That means that the same variable will be captured by the various functions, and mutated in each loop. Essentially it is as if it were written as
var i = 0;
var s, s2;
while (i !== 5) {
  s = i.toString();
  s2 = s;
  functions.push(() => {
    println(s2);
  });
  i += 1;
}

which is completely wrong.
We must maintain a Set[LocalIdent]s that are safe to capture, as a well as a inLoop: Boolean in the environment. Once in a loop, no new identifier can ever be captured, including synthetic ones. For anything that comes up inside a loop, we must use the old mechanism of passing it through an IIFE. If we're not inside any loop, we can either directly reuse the val, or store it in a synthetic val.
(Of course, all this dance isn't required with avoidLetConst = false, since lets and consts have a correct scope. But that's not the default anymore so there's probably no need to care about that use case.)

Hum, but isn't that a problem also for ApplyImportDynamic nodes (arguably using them in a loop is "not right", but it's allowed so it must work). Essentially:
var i: int = 0
while (i != 5) {
  val s: string = i.toString()
  js.dynamicImport {
    heavy(s)
  }
  i += 1
}

Compiles to:
$c_Lhelloworld_HelloWorld$.prototype.main__AT__V = (function(args) {
  var i = 0;
  while ((i !== 5)) {
    var this$1 = i;
    var s = ("" + this$1);
    import("./helloworld.HelloWorld$$anon$1.js").then((($$module) => $$module.$s_Lhelloworld_HelloWorld$$anon$1__dynamicImport$__T__O(s)));
    i = ((1 + i) | 0)
  }
});

Which is wrong. IIUC this is wrong in 1.4.0 :-(

Hum, but isn't that a problem also for ApplyImportDynamic nodes (arguably using them in a loop is "not right", but it's allowed so it must work). Essentially:
var i: int = 0
while (i != 5) {
  val s: string = i.toString()
  js.dynamicImport {
    heavy(s)
  }
  i += 1
}

Compiles to:
$c_Lhelloworld_HelloWorld$.prototype.main__AT__V = (function(args) {
  var i = 0;
  while ((i !== 5)) {
    var this$1 = i;
    var s = ("" + this$1);
    import("./helloworld.HelloWorld$$anon$1.js").then((($$module) => $$module.$s_Lhelloworld_HelloWorld$$anon$1__dynamicImport$__T__O(s)));
    i = ((1 + i) | 0)
  }
});

Which is wrong. IIUC this is wrong in 1.4.0 :-(

Er ... yes. It's definitely wrong there too. Somehow I had not noticed that.

Er ... yes. It's definitely wrong there too. Somehow I had not noticed that.

Filed as #4385.

Filed as #4385.

Updated. The diff on reversi is here: https://gist.github.com/gzm0/80f594aa454a93e0e83a758b5a66abc6

Updated. The diff on reversi is here: https://gist.github.com/gzm0/80f594aa454a93e0e83a758b5a66abc6

The condition for eliding we use right now is imprecise. Consider the following generated code:
$c_Lreversi_Reversi.prototype.buildUI__V = (function() {
  // snip
  var context = domCanvas.getContext("2d");
  // snip
  while (/* snip */) {
    // snip
    var square = $as_Lreversi_Reversi$Square(arg1);
    $p_Lreversi_Reversi__drawSquare$1__Lreversi_Reversi$Square__I__Lreversi_CanvasRenderingContext2D__I__I__V(this, square, 48, context, 24, 20);
    square.Lreversi_Reversi$Square__f_onOwnerChange = new $c_sjsr_AnonFunction2(((square$1, context$1) => ((prevOwner$2, newOwner$2) => {
      // snip
    }))(square, context));
    // snip
  };
  // snip
});

Capturing square is necessary, but capturing context isn't. I'm wondering if it makes sense to track this individually.

The condition for eliding we use right now is imprecise. Consider the following generated code:
$c_Lreversi_Reversi.prototype.buildUI__V = (function() {
  // snip
  var context = domCanvas.getContext("2d");
  // snip
  while (/* snip */) {
    // snip
    var square = $as_Lreversi_Reversi$Square(arg1);
    $p_Lreversi_Reversi__drawSquare$1__Lreversi_Reversi$Square__I__Lreversi_CanvasRenderingContext2D__I__I__V(this, square, 48, context, 24, 20);
    square.Lreversi_Reversi$Square__f_onOwnerChange = new $c_sjsr_AnonFunction2(((square$1, context$1) => ((prevOwner$2, newOwner$2) => {
      // snip
    }))(square, context));
    // snip
  };
  // snip
});

Capturing square is necessary, but capturing context isn't. I'm wondering if it makes sense to track this individually.

Capturing square is necessary, but capturing context isn't. I'm wondering if it makes sense to track this individually.

In theory it would make sense, yes. However, it's only an improvement in practice if we can go from having an IIFE to not having an IIFE. Having an IIFE will less params is only marginally better. I'm not sure if it would be a common enough case to have a Closure inside a loop, that only captures values declared outside the loop.

Capturing square is necessary, but capturing context isn't. I'm wondering if it makes sense to track this individually.

In theory it would make sense, yes. However, it's only an improvement in practice if we can go from having an IIFE to not having an IIFE. Having an IIFE will less params is only marginally better. I'm not sure if it would be a common enough case to have a Closure inside a loop, that only captures values declared outside the loop.

I'm debugging the CI failure. This is part of a method that fails:
$c_Lorg_scalajs_testsuite_jsinterop_NonNativeJSTypeTest.prototype.nestedAnonymousClasses__V = (function() {
  var outer = ((superClass$) => (() => {
    var outer = this;
    var this\u00f8 = {};
    Object.defineProperty(this\u00f8, $m_sjsr_package$().privateFieldsSymbol__O(), {
      "value": {
        "org$scalajs$testsuite$jsinterop$NonNativeJSTypeTest$$anon$$_x": 0
      }
    });
    this\u00f8.inner = null;
    Object.defineProperty(this\u00f8, "x", {
      "get": (function() {
        return $s_Lorg_scalajs_testsuite_jsinterop_NonNativeJSTypeTest$$anon$9__x__Lorg_scalajs_testsuite_jsinterop_NonNativeJSTypeTest$$anon$9__I(this)
      }),
      "configurable": true
    });
    this\u00f8[$m_sjsr_package$().privateFieldsSymbol__O()].org$scalajs$testsuite$jsinterop$NonNativeJSTypeTest$$anon$$_x = 1;
    this\u00f8.inner = ((superClass$) => (() => {
      var outer = this\u00f8;
      var this\u00f8 = {};
      Object.defineProperty(this\u00f8, $m_sjsr_package$().privateFieldsSymbol__O(), {
        "value": {
          "$outer": null
        }
      });
      this\u00f8.inc = (function() {
        $s_Lorg_scalajs_testsuite_jsinterop_NonNativeJSTypeTest$$anon$9$$anon$10__inc__Lorg_scalajs_testsuite_jsinterop_NonNativeJSTypeTest$$anon$9$$anon$10__V(this)
      });
      if ((outer === null)) {
        throw $m_sjsr_package$().unwrapJavaScriptException__jl_Throwable__O(null)
      } else {
        this\u00f8[$m_sjsr_package$().privateFieldsSymbol__O()].$outer = outer
      };
      return this\u00f8
    }))(Object)();
    return this\u00f8
  }))(Object)();
  var inner = outer.inner;
  $m_Lorg_junit_Assert$().assertEquals__O__O__V(1, outer.x);
  inner.inc();
  $m_Lorg_junit_Assert$().assertEquals__O__O__V(2, outer.x)
});

My understanding here is that the problem is the re-use of this\u00f8 inside nested closures: Our IR fully resets the variable scope inside a closure. However, our implementation does not when we use arrow functions (without lets). Could this be a latent bug introduced by b99af4e537185ac164088a437da1b316c1903af2? (Before that, we'd never emit arrow functions without lets).

I'm debugging the CI failure. This is part of a method that fails:
$c_Lorg_scalajs_testsuite_jsinterop_NonNativeJSTypeTest.prototype.nestedAnonymousClasses__V = (function() {
  var outer = ((superClass$) => (() => {
    var outer = this;
    var this\u00f8 = {};
    Object.defineProperty(this\u00f8, $m_sjsr_package$().privateFieldsSymbol__O(), {
      "value": {
        "org$scalajs$testsuite$jsinterop$NonNativeJSTypeTest$$anon$$_x": 0
      }
    });
    this\u00f8.inner = null;
    Object.defineProperty(this\u00f8, "x", {
      "get": (function() {
        return $s_Lorg_scalajs_testsuite_jsinterop_NonNativeJSTypeTest$$anon$9__x__Lorg_scalajs_testsuite_jsinterop_NonNativeJSTypeTest$$anon$9__I(this)
      }),
      "configurable": true
    });
    this\u00f8[$m_sjsr_package$().privateFieldsSymbol__O()].org$scalajs$testsuite$jsinterop$NonNativeJSTypeTest$$anon$$_x = 1;
    this\u00f8.inner = ((superClass$) => (() => {
      var outer = this\u00f8;
      var this\u00f8 = {};
      Object.defineProperty(this\u00f8, $m_sjsr_package$().privateFieldsSymbol__O(), {
        "value": {
          "$outer": null
        }
      });
      this\u00f8.inc = (function() {
        $s_Lorg_scalajs_testsuite_jsinterop_NonNativeJSTypeTest$$anon$9$$anon$10__inc__Lorg_scalajs_testsuite_jsinterop_NonNativeJSTypeTest$$anon$9$$anon$10__V(this)
      });
      if ((outer === null)) {
        throw $m_sjsr_package$().unwrapJavaScriptException__jl_Throwable__O(null)
      } else {
        this\u00f8[$m_sjsr_package$().privateFieldsSymbol__O()].$outer = outer
      };
      return this\u00f8
    }))(Object)();
    return this\u00f8
  }))(Object)();
  var inner = outer.inner;
  $m_Lorg_junit_Assert$().assertEquals__O__O__V(1, outer.x);
  inner.inc();
  $m_Lorg_junit_Assert$().assertEquals__O__O__V(2, outer.x)
});

My understanding here is that the problem is the re-use of this\u00f8 inside nested closures: Our IR fully resets the variable scope inside a closure. However, our implementation does not when we use arrow functions (without lets). Could this be a latent bug introduced by b99af4e537185ac164088a437da1b316c1903af2? (Before that, we'd never emit arrow functions without lets).

My understanding here is that the problem is the re-use of this\u00f8 inside nested closures: Our IR fully resets the variable scope inside a closure. However, our implementation does not when we use arrow functions (without lets). Could this be a latent bug introduced by b99af4e? (Before that, we'd never emit arrow functions without lets).

It's definitely reusing the identifier this\u00f8 that's the problem, indeed. I don't think it's a latent bug, though. I believe it is genuinely introduced by this PR. Arrow functions, like function functions, define a new scope in JavaScript, even for vars. The only differences between them are that arrow functions use the this from outside, and they cannot be called with new.
I think the problem here is that, due to the localReplacements, we can introduce in the scope of the function a name that is defined outside, and that was previously named differently as one of the capture ParamDefs. Because of the localReplacements, we have both the VarDef locally defined in the Closure, and the capture value coming from outside spliced instead of the capture param.
So I think that when we encounter a VarDef, we must check whether its name is already defined in localReplacements, and if it is, rename it to something and add that as well in the localReplacements. Or something like that, at least.

My understanding here is that the problem is the re-use of this\u00f8 inside nested closures: Our IR fully resets the variable scope inside a closure. However, our implementation does not when we use arrow functions (without lets). Could this be a latent bug introduced by b99af4e? (Before that, we'd never emit arrow functions without lets).

It's definitely reusing the identifier this\u00f8 that's the problem, indeed. I don't think it's a latent bug, though. I believe it is genuinely introduced by this PR. Arrow functions, like function functions, define a new scope in JavaScript, even for vars. The only differences between them are that arrow functions use the this from outside, and they cannot be called with new.
I think the problem here is that, due to the localReplacements, we can introduce in the scope of the function a name that is defined outside, and that was previously named differently as one of the capture ParamDefs. Because of the localReplacements, we have both the VarDef locally defined in the Closure, and the capture value coming from outside spliced instead of the capture param.
So I think that when we encounter a VarDef, we must check whether its name is already defined in localReplacements, and if it is, rename it to something and add that as well in the localReplacements. Or something like that, at least.

Arrow functions, like function functions, define a new scope in JavaScript, even for vars.

In that case, yes; it's this PRs fault. Back to the drawing board :P

Arrow functions, like function functions, define a new scope in JavaScript, even for vars.

In that case, yes; it's this PRs fault. Back to the drawing board :P

Is there anything you'd like me to look at in this PR at the moment?

No (it's currently broken). Thanks for checking.

This ready for a round of review.

Diff is updated: https://gist.github.com/gzm0/80f594aa454a93e0e83a758b5a66abc6
What additional tests do we need?

What additional tests do we need?

I believe it would be good to have one OptimizerTest that ensures that we indeed rename to the same name as a VarRef. At least this way we'll immediately know who to blame (the function emitter) if the IIFE avoidance stops working.
Other than that, I guess not much.

I've been thinking about this a bit, and I think we should move literal replacement to the Optimizer.

it is much better equipped to do this
we can do it in the optimizer so we should
we'll get more downstream optimization opportunity

This would mean we'd only have replacement machinery in the function emitter to replace captured this. This in turn might allow us to simplify it and maybe avoid the whole position hackery. WDYT?

Yes, indeed. If we can make literal replacement in the optimizer, that would be better.

It's been 2.5 months since v1.10.0. We should make a release soon.
It would be nice to have this PR in. Do you think you may have time to bring it over the finish line in the coming days, perhaps over the week-end? Otherwise we can also keep it for the next release, of course.

The test that fails in fullOpt is
https://github.com/scala-js/scala-js/blob/4fbd7cad1a556d6d62be9dd2ef669801ee6dc1e4/test-suite/js/src/test/scala/org/scalajs/testsuite/jsinterop/ExportsTest.scala#L257-L273
isn't it?
It's one of those tests that makes sure something that throws keeps throwing. GCC is known not to care too much about this (we exclude one test or the other because of that). Here I suspect that, with the simplified closure form that we give it, it can tell that x.foo = and x.bar = write to properties that are never read afterwards. It could be that it decides to eliminate the assignments altogether.
If that assessment is correct, we can fool it a bit more by adding force-reads of the value after the two assertThrows:
assertEquals(1, x.foo)
assertEquals(1, x.bar)

I managed to find some time :)

Two things:

IMHO with the new transformCapturingBody in OptimizerCore we should probably squash all the commits into one.
I have rebased this and it seems checksizes is increasing now. I'll let CI run to check that I haven't fat-fingered something.

IMHO with the new transformCapturingBody in OptimizerCore we should probably squash all the commits into one.

Indeed, I agree.

I have rebased this and it seems checksizes is increasing now. I'll let CI run to check that I haven't fat-fingered something.

It looks like fat-fingering :p The CI is already saying the following about 2.11:
[info] Checksizes: reversi2_11 Scala 2.11.12
[info] fastLink size = 515735 (expected Range 520000 to 521000)
[info] fullLink size = 107565 (expected Range 108000 to 109000)
[info] fastLink gzip size = 65864 (expected Range 66000 to 67000)
[info] fullLink gzip size = 28109 (expected Range 28000 to 29000)

I'm looking at the latest changes now.

Addressed all the comments and squashed.

I took the liberty to force-push myself to fix the checksizes.


Docs: Fix spelling in text and names of tests

Pull request checklist
Make sure you:

[ x ] Signed the Contributor License Agreement
[ x ] Followed the commit message guidelines

Short description of the change(s)
Fix some minor spelling mistakes.

Thanks, @frvge!


fix(domworld): Allow setting re-setting of context

Allows re-setting of context inside of the DOMWorld utility, as having multiple debuggers attached can cause this value to get re-sent.

as having multiple debuggers attached can cause this value to get re-sent.

@joelgriffith wait how's this?

@aslushnikov see https://github.com/GoogleChrome/puppeteer/issues/4197#issuecomment-481793410. It's kind of an edgecase, but I'm sure it'll appear once more and more tooling start to use puppeteer...

@aslushnikov What are your thoughts on this? Happy to take a different direction in the fix, otherwise I'm not sure how far back this issue goes.

This is fixing a firefox bug?

@joelgriffith thank you for the PR and the repro! I'll close this in favor of #4276


⚠ Catalog API Endpoint has degraded performance

In a94dcac, Catalog API Endpoint (https://catalog.roblox.com/v1/bundles/details?bundleIds=192) experienced degraded performance:

HTTP code: 200
Response time: 1798 ms

Resolved: Catalog API Endpoint performance has improved in b19df6f.


[SPARK-43487][SQL] Fix wrong error message used for ambiguousRelationAliasNameInNestedCTEError

What changes were proposed in this pull request?
The pr aims to fix  wrong error message used for ambiguousRelationAliasNameInNestedCTEError.
Why are the changes needed?
Fix bug.
Does this PR introduce any user-facing change?
No.
How was this patch tested?
Pass GA.

@panbingkun Isn't this a duplicate of https://github.com/apache/spark/pull/41155?

@panbingkun Isn't this a duplicate of #41155?

It seems like it's duplicated. Should I turn it off?

It seems like it's duplicated. Should I turn it off?

Please, keep it alive so far.

@panbingkun Could you close this PR, please.

@panbingkun Could you close this PR, please.

OK


Backwards compatibility + test fixes

@jbertram  why the revert?

@jbertram nice!! thanks a lot for the changes.. much better this way.


Self variant enum res fix

Fixes #4789.
This is my first PR for this project, so it's probably worth giving it an extra close look.
A few things that I wasn't sure about:

Is resolve_path really the best place to perform this check? It seemed like a natural place, but perhaps there's a better place?
When handling the new variant PathResolution::VariantDef, I couldn't see an obvious variant of TypeNs to return in in_type_ns for Unions and Structs.

I'll see if I can also handle the record case in this PR. @flodiebold
Just as a sanity check, for the record case, you mean something like this should resolve right?
enum Foo {
    Bar{baz: usize},
}

impl Foo {
    fn baz(self) {
        match self {
            Self::Bar { baz<|> } => {}
        }
    }
}

It seems that even without this PR baz resolves fine. With the PR Self::Bar also resolves.

The level of code duplication here that I introduced is bothering me a bit:
if let Some(path_expr) = path.syntax().parent().and_then(ast::PathExpr::cast) {
    let expr_id = self.expr_id(db, &path_expr.into())?;
    if let Some(assoc) = self.infer.as_ref()?.assoc_resolutions_for_expr(expr_id) {
        return Some(PathResolution::AssocItem(assoc.into()));
    }
    if let Some(VariantId::EnumVariantId(variant)) =
        self.infer.as_ref()?.variant_resolution_for_expr(expr_id)
    {
        return Some(PathResolution::Def(ModuleDef::EnumVariant(variant.into())));
    }
}
if let Some(path_pat) = path.syntax().parent().and_then(ast::PathPat::cast) {
    let pat_id = self.pat_id(&path_pat.into())?;
    if let Some(assoc) = self.infer.as_ref()?.assoc_resolutions_for_pat(pat_id) {
        return Some(PathResolution::AssocItem(assoc.into()));
    }
    if let Some(VariantId::EnumVariantId(variant)) =
        self.infer.as_ref()?.variant_resolution_for_pat(pat_id)
    {
        return Some(PathResolution::Def(ModuleDef::EnumVariant(variant.into())));
    }
}

I would normally put the shared stuff into a function something like this:
fn resolve_with_infer<T>(&self, id: Idx<T>) -> Option<PathResolution> {
...
}

But Idx is defined in ra_arena which is not a dependency of the ra_hir crate, and I'm not sure if it's a good idea to add a dependency just for this.

I think that's fine -- it's good to directly see all the different cases being handled. Can you add tests for the record cases? E.g. what you wrote for patterns, and something like
impl Foo {
    fn baz(self) {
        Self::Bar<|> {}
    }
}

for expressions.

Yeah not a problem!
I'm just out of town for another day but I'll add the tests as soon as I get back.

Just a little update.
I have four tests for the pattern/expression and enum const/record cases, and I've realized it's not resolving the record cases correctly yet. For example:
enum Foo {
    Bar { val: i32 },
}
impl Foo {
    fn baz(self) {
        Self::Bar<|> {val: 4};
    }
}

This doesn't resolve (Self::Bar is a record literal). What's kind of interesting is if we are explicit with the enum variant (replace Self with Foo) it ends up resolving in resolve_hir_path, even though it appears in record_field_resolutions from type inference. So I guess it's probably just a matter of figuring out where to check record_field_resolutions and record_field_pat_resolutions (should the explicit emum variant case even be resolving in resolve_hir_path?).

Well, neither should be resolving from record_field_resolutions or record_field_pat_resolutions, those are for fields. They should be resolving from variant_resolutions. Maybe it's not checking the right expression?

The code only looks in variant_resolutions for an ast::PathExpr, but in the record case there is no PathExpr, but an ast::RecordLit. Similar for patterns.

Yeah looking closer, it looks like there's only one segment of whatever is resolving in record_field_pat_resolutions, which I guess probably just the field val and not Foo::Bar. I should have mentioned that it's getting resolved in variant_resolutions.
record_field_pat_resolutions: {
    Idx::<Pat>(1): FieldId {
        parent: EnumVariantId(
            EnumVariantId {
                parent: EnumId(
                    0,
                ),
                local_id: Idx::<EnumVariantData>(0),
            },
        ),
        local_id: Idx::<FieldData>(0),
    },
},
variant_resolutions: {
    PatId(
        Idx::<Pat>(2),
    ): EnumVariantId(
        EnumVariantId {
            parent: EnumId(
                0,
            ),
            local_id: Idx::<EnumVariantData>(0),
        },
    ),
},

Any thoughts on a good location to perform these checks? Should I create a new function somewhat similar to resolve_path but just deals with records?

The more I think about it doing the checks in resolve_path seems like a good choice.

If resolve_path is a good spot, I've made the changes and all tests are now passing.

LGTM except for some unnecessary cases!
bors delegate+

bors r+