Get TypeSyntax de ITypeSymbol

Estou experimentando um pouco com o Roslyn-CT

Atualmente estou tentando substituirvar com o tipo de concreto.

var i=1;

Deve se tornar

int i=1;

Configurar o tipo inferido é fácil. Mas como essa parte acontece no modelo semântico, recebo umITypeSymbol. A substituição acontece no modelo de sintaxe, então eu preciso de umTypeSyntax. Como não quero um nome inchado global::System.Int32), a conversão depende do contexto using, tipos aninhados etc.

A versão do Visual Studio que faz parte do Roslyn já possui essa funcionalidade em sua correção rápida "Simplify type name", mas, olhando os exemplos, não consegui encontrar uma maneira fácil de fazer essa conversã

Com base na resposta de Kevin Pilch-Bisson, agora estou usando:

var location = document.GetSyntaxTree().GetLocation(node);
string name = variableType.ToMinimalDisplayString((Location)location, (SemanticModel)document.GetSemanticModel());

Um local queToMinimalDisplayString pode ser obtido em umCommonSyntaxTree.

Uma complicação adicional é queToMinimalDisplayString requer as classesLocation eSemanticModel, enquanto quedocument.GetSemanticModel() eCommonSyntaxTree.GetLocation retorna apenas uma interfac
Eu trabalhei simplesmente transmitindo para as aulas, o que parece funcionar por enquanto.

Hmm, parece que as classes são específicas de C # e a linguagem das interfaces é independent

Eu carreguei uma versão de trabalho no github:https: //github.com/CodesInChaos/Rosly

Não funciona paravar em umforeach, mas suspeito que isso seja uma limitação da versão atual do Rosly

questionAnswers(1)

yourAnswerToTheQuestion