public EnvDTE.CodeVariable AddEnumMember(SyntaxNode containerNode, string name, object value, object position) { if (value is not null and not string) { throw Exceptions.ThrowEInvalidArg(); } var semanticModel = GetSemanticModel(); var type = (ITypeSymbol?)semanticModel.GetDeclaredSymbol(containerNode); if (type == null) { throw Exceptions.ThrowEInvalidArg(); } var newField = CreateFieldDeclaration(containerNode, CodeModelService.GetUnescapedName(name), EnvDTE.vsCMAccess.vsCMAccessPublic, type); if (value != null) { newField = CodeModelService.AddInitExpression(newField, (string)value); } var insertionIndex = CodeModelService.PositionVariantToMemberInsertionIndex(position, containerNode, fileCodeModel: this); newField = InsertMember(containerNode, newField, insertionIndex); return((EnvDTE.CodeVariable)CreateInternalCodeMember(this.State, fileCodeModel: this, node: newField)); }
internal void UpdateInitExpression(SyntaxNode node, string initExpression) { node = CodeModelService.GetNodeWithInitializer(node); var updatedNode = CodeModelService.AddInitExpression(node, initExpression); if (node != updatedNode) { UpdateNode(node, updatedNode); } }