getConfigFileNameForFile(info) {
    if (isOpenScriptInfo(info)) {
      Debug.assert(info.isScriptOpen());
      const result = this.configFileForOpenFiles.get(info.path);
      if (result !== void 0)
        return result || void 0;
    }
    this.logger.info(`Search path: ${getDirectoryPath(info.fileName)}`);
    const configFileName = this.forEachConfigFileLocation(info, (canonicalConfigFilePath, configFileName2) => this.configFileExists(configFileName2, canonicalConfigFilePath, info));
    if (configFileName) {
      this.logger.info(`For info: ${info.fileName} :: Config file name: ${configFileName}`);
    } else {
      this.logger.info(`For info: ${info.fileName} :: No config files found.`);
    }
    if (isOpenScriptInfo(info)) {
      this.configFileForOpenFiles.set(info.path, configFileName || false);
    }
    return configFileName;
  }
This function tries to search for a tsconfig.json for the given file.
This is different from the method the compiler uses because
the compiler can assume it will always start searching in the
current directory (the directory in which tsc was invoked).
The server must start searching from the directory containing
the newly opened file.
If script info is passed in, it is asserted to be open script info
otherwise just file name