package com.jetbrains.lang.dart.ide.template.macro; import com.intellij.codeInsight.template.*; import com.intellij.psi.PsiElement; import com.jetbrains.lang.dart.util.DartRefactoringUtil; import org.jetbrains.annotations.NotNull; import java.util.Set; /** * @author: Fedor.Korotkov */ public class DartSuggestIndexNameMacro extends Macro { @Override public String getName() { return "dartSuggestIndexName"; } @Override public String getPresentableName() { return "dartSuggestIndexName()"; } @NotNull @Override public String getDefaultValue() { return "i"; } @Override public Result calculateResult(@NotNull Expression[] params, ExpressionContext context) { final PsiElement at = context.getPsiElementAtStartOffset(); final Set<String> names = DartRefactoringUtil.collectUsedNames(at); for (char i = 'i'; i < 'z'; ++i) { if (!names.contains(Character.toString(i))) { return new TextResult(Character.toString(i)); } } return null; } }