public override object Validate(ScriptFile script, IExpression value, DocRange valueRange) { StringAction str = value as StringAction; if (str == null) { script.Diagnostics.Error("Expected string constant.", valueRange); return(null); } string resultingPath = Extras.CombinePathWithDotNotation(script.Uri.FilePath(), str.Value); if (resultingPath == null) { script.Diagnostics.Error("File path contains invalid characters.", valueRange); return(null); } string dir = Path.GetDirectoryName(resultingPath); if (Directory.Exists(dir)) { DeltinScript.AddImportCompletion(script, dir, valueRange); } if (!File.Exists(resultingPath)) { script.Diagnostics.Error($"No file was found at '{resultingPath}'.", valueRange); return(null); } if (FileTypes != null && !FileTypes.Contains(Path.GetExtension(resultingPath).ToLower())) { script.Diagnostics.Error($"Expected a file with the file type '{string.Join(", ", FileTypes)}'.", valueRange); return(null); } script.AddDefinitionLink(valueRange, new Location(Extras.Definition(resultingPath), DocRange.Zero)); script.AddHover(valueRange, resultingPath); return(resultingPath); }