/*
 * @author max
 */
package com.intellij.json;

import com.intellij.lang.refactoring.NamesValidator;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.psi.tree.IElementType;
import org.jetbrains.annotations.NotNull;

public class JsonNamesValidator implements NamesValidator {

  private final JsonLexer myLexer = new JsonLexer();

  @Override
  public synchronized boolean isKeyword(@NotNull String name, Project project) {
    myLexer.start(name);
    return JsonParserDefinition.JSON_KEYWORDS.contains( myLexer.getTokenType() ) && myLexer.getTokenEnd() == name.length();
  }
  @Override
  public synchronized boolean isIdentifier(@NotNull String name, final Project project) {
    if (!StringUtil.startsWithChar(name,'\'') && !StringUtil.startsWithChar(name,'\"')) {
      name = "\"" + name;
    }

    if (!StringUtil.endsWithChar(name,'"') && !StringUtil.endsWithChar(name,'\"')) {
      name += "\"";
    }

    myLexer.start(name);
    IElementType type = myLexer.getTokenType();

    return myLexer.getTokenEnd() == name.length() && (type == JsonElementTypes.DOUBLE_QUOTED_STRING ||
                                                      type == JsonElementTypes.SINGLE_QUOTED_STRING);
  }

}

@@ -814,33 +814,32 @@
 sWithChar(name,'
-%5C
 %22')) %7B%0A      nam
@@ -940,17 +940,17 @@
 (name,'%5C
-%22
+'
 ')) %7B%0A  

fix 12 years old typo