bytedeco/javacpp

Type aliasing and indirections

Open

#669 ouverte le 8 avr. 2023

Voir sur GitHub
 (0 commentaires) (0 réactions) (0 assignés)Java (620 forks)batch import
bughelp wanted

Métriques du dépôt

Stars
 (4 279 stars)
Métriques de merge PR
 (Aucune PR mergée en 30 j)

Description

namespace ns {
  struct M;
  using MPtr = std::shared_ptr<M>;
}


static public void f(ns::MPtr x) {}

In this example, f is parsed correctly as:

public static native @ByVal public f(@SharedPtr M x);

But if we add an info, for instance new Info("ns::M").purify(), then f becomes:

public static native @ByVal public f(@SharedPtr ns::M x);

Not something blocking, since we can force an additional info: new Info("ns::M").purify().pointerTypes("M"), but there may be something to fix here. Note that:

  • without the type aliasing, it works as expected.
  • the bug seems to show up for other indirections like M* instead of shared pointer.

I'm not sure how to fix that, maybe it's related to this line where valueTypes is given the value of typeName, which is a CPP name and not a Java name.

Guide contributeur