Can`t parse attributes defined by macro
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 45/100
Línea de trabajo
Abre src/CppAst.Tests/TestAttributes.cs en TestStructAttributes y ejecútalo con ParseAttributes y ParseMacros habilitados usando la entrada MIDL_INTERFACE proporcionada. Sigue cómo ParseMacros y ParseAttributes gestionan el uuid expandido por la macro; estará terminado cuando la prueba analice la estructura y devuelva el atributo uuid esperado, como ocurre después del workaround de regex.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
I try to parse DirectX headers and parser doesn't handle uuid attribute if it is defined by macro:
MIDL_INTERFACE("9d06dffa-d1e5-4d07-83a8-1bb123f2f841")
ID3D11Device2 : public ID3D11Device1
As a workaround, replacing MIDL_INTERFACE by regex works and parser returns correct attributes
struct __declspec(uuid("9d06dffa-d1e5-4d07-83a8-1bb123f2f841")) __declspec(novtable)
ID3D11Device2 : public ID3D11Device1
Both ParseAttributes and ParseMacros are set to true
You can reproduce it if you replace input text in TestStructAttributes and enable macros parsing.
@"
#ifndef DECLSPEC_NOVTABLE
#if (_MSC_VER >= 1100) && defined(__cplusplus)
#define DECLSPEC_NOVTABLE __declspec(novtable)
#else
#define DECLSPEC_NOVTABLE
#endif
#endif
#ifndef DECLSPEC_UUID
#if (_MSC_VER >= 1100) && defined(__cplusplus)
#define DECLSPEC_UUID(x) __declspec(uuid(x))
#else
#define DECLSPEC_UUID(x)
#endif
#endif
#define MIDL_INTERFACE(x) struct DECLSPEC_UUID(x) DECLSPEC_NOVTABLE
MIDL_INTERFACE(""9d06dffa-d1e5-4d07-83a8-1bb123f2f841"") Test{
int a;
int b;
};"
- Lenguaje dominante
- C#
- Estrellas
- 623
- Forks
- 79
- Merge medio
- 2 d 2 h
- PR fusionados (30 d)
- 1
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de xoofx/CppAst.NET
-
CppContainerList throws "The item belongs already to a container" when parsing VTK 9.5 headers BodyAbierto
Dificultad 3/5 1-2 días Aptitud para principiantes 55/100
xoofx/CppAst.NET#122 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 35/100
xoofx/CppAst.NET#117 ·
-
Parsing .cpp implementation?Abiertoquestion
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
xoofx/CppAst.NET#115 · 3 comentarios ·
-
question
Dificultad 4/5 3-5 días Aptitud para principiantes 38/100
xoofx/CppAst.NET#95 · 4 comentarios ·
-
NullReferenceException when parsing instantiation of a previously partially specialised templateAbiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 35/100
xoofx/CppAst.NET#77 · 6 comentarios ·
Todos los issues de xoofx/CppAst.NET
Issues similares
-
S: Untriaged
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
Trauma-Station/Trauma-Station#5058 ·
Los mantenedores suelen responder en 1 día
-
:books: documentation untriaged
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
Los mantenedores suelen responder en 1 día
-
documentation good first issue hacktoberfest
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
Los mantenedores suelen responder en 1 día
-
good first issue help wanted ready-for-human
Dificultad 2/5 Medio día Aptitud para principiantes 62/100
Los mantenedores suelen responder en 1 día