From 3c0177134d126956336865623ea3d6861be59cfa Mon Sep 17 00:00:00 2001 From: jsmall-nvidia Date: Thu, 1 Sep 2022 10:06:19 -0400 Subject: Make FileSystem files and OS files distinct (#2383) * #include an absolute path didn't work - because paths were taken to always be relative. * Make DownstreamCompileOptions use POD types. * CharSliceAllocator -> SliceAllocator Added SliceConverter CharSliceCaster -> SliceCaster * First attempt at zero terminating around blobs. * Fix clang warning. * Add SlangTerminatedChars Make Blob implementations support it. Make most blobs 'terminated'. * Fix bug setting up sourceFiles for CommandLineDownstreamCompiler. * Traffic in TerminatedCharSlice for sourceFiles. Use ArtifactDesc to generate temporary file names for source. * Fix typo in testing for shared library/C++. * Working with source being passed as artifacts to DownstreamCompiler. * Use artifacts in SourceManager/SourceFile. * Support infering extension from the original file extension. * * Infer extension if can't determine from the artifact type * Split IOSFile/IExtFile representations * Move responsibility for creating OS file to the handler. * Disable the check memory path. --- source/compiler-core/slang-artifact-desc-util.cpp | 29 +++++++++++++++-------- 1 file changed, 19 insertions(+), 10 deletions(-) (limited to 'source/compiler-core/slang-artifact-desc-util.cpp') diff --git a/source/compiler-core/slang-artifact-desc-util.cpp b/source/compiler-core/slang-artifact-desc-util.cpp index 7534e1265..7e274794f 100644 --- a/source/compiler-core/slang-artifact-desc-util.cpp +++ b/source/compiler-core/slang-artifact-desc-util.cpp @@ -704,7 +704,13 @@ SlangResult ArtifactDescUtil::appendDefaultExtension(const ArtifactDesc& desc, S /* static */String ArtifactDescUtil::getBaseNameFromPath(const ArtifactDesc& desc, const UnownedStringSlice& path) { - String name = Path::getFileName(path); + const String name = Path::getFileName(path); + return getBaseNameFromName(desc, name.getUnownedSlice()); +} + +/* static */String ArtifactDescUtil::getBaseNameFromName(const ArtifactDesc& desc, const UnownedStringSlice& inName) +{ + String name(inName); const bool isSharedLibraryPrefixPlatform = SLANG_LINUX_FAMILY || SLANG_APPLE_FAMILY; if (isSharedLibraryPrefixPlatform) @@ -723,16 +729,19 @@ SlangResult ArtifactDescUtil::appendDefaultExtension(const ArtifactDesc& desc, S } } - // Strip any extension + // Strip any extension { StringBuilder descExt; - - appendDefaultExtension(desc, descExt); - - // Strip the extension if it's a match - if (descExt.getLength() && - Path::getPathExt(name) == descExt) + if (SLANG_SUCCEEDED(appendDefaultExtension(desc, descExt)) && + descExt.getLength()) { + // TODO(JS): + // It has an extension. We could check if they are the same + // but if they are not that might be fine, because of case insensitivity + // or perhaps there are multiple valid extensions. So for now we just strip + // and don't bother confirming with something like.. + // if (Path::getPathExt(name) == descExt)) + name = Path::getFileNameWithoutExt(name); } } @@ -740,9 +749,9 @@ SlangResult ArtifactDescUtil::appendDefaultExtension(const ArtifactDesc& desc, S return name; } -/* static */String ArtifactDescUtil::getBaseName(const ArtifactDesc& desc, IFileArtifactRepresentation* fileRep) +/* static */String ArtifactDescUtil::getBaseName(const ArtifactDesc& desc, IPathArtifactRepresentation* pathRep) { - UnownedStringSlice path(fileRep->getPath()); + UnownedStringSlice path(pathRep->getPath()); return getBaseNameFromPath(desc, path); } -- cgit v1.2.3