Skip to content

Commit 06825c8

Browse files
committed
---
yaml --- r: 347764 b: refs/heads/master c: eb30f21 h: refs/heads/master
1 parent d8539bb commit 06825c8

File tree

3 files changed

+12
-19
lines changed

3 files changed

+12
-19
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
refs/heads/master: c3f2ce655edb8db6888d4d2c3f1bf039d871d872
2+
refs/heads/master: eb30f21bd200e7f940f488dda9e43e53f6a82d4c
33
refs/heads/master-next: 203b3026584ecad859eb328b2e12490099409cd5
44
refs/tags/osx-passed: b6b74147ef8a386f532cf9357a1bde006e552c54
55
refs/tags/swift-2.2-SNAPSHOT-2015-12-01-a: 6bb18e013c2284f2b45f5f84f2df2887dc0f7dea

trunk/include/swift/AST/KnownStdlibTypes.def

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ KNOWN_STDLIB_TYPE_DECL(Float, NominalTypeDecl, 0)
4545
KNOWN_STDLIB_TYPE_DECL(Double, NominalTypeDecl, 0)
4646
KNOWN_STDLIB_TYPE_DECL(Float80, NominalTypeDecl, 0)
4747

48+
KNOWN_STDLIB_TYPE_DECL(_MaxBuiltinFloatType, TypeAliasDecl, 0)
49+
4850
KNOWN_STDLIB_TYPE_DECL(String, NominalTypeDecl, 0)
4951
KNOWN_STDLIB_TYPE_DECL(Substring, NominalTypeDecl, 0)
5052
KNOWN_STDLIB_TYPE_DECL(Array, NominalTypeDecl, 1)

trunk/lib/Sema/CSApply.cpp

Lines changed: 9 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1834,8 +1834,6 @@ namespace {
18341834
Expr *forceBridgeFromObjectiveC(Expr *object, Type valueType) {
18351835
return bridgeFromObjectiveC(object, valueType, false);
18361836
}
1837-
1838-
TypeAliasDecl *MaxFloatTypeDecl = nullptr;
18391837

18401838
public:
18411839
ExprRewriter(ConstraintSystem &cs, const Solution &solution,
@@ -2002,25 +2000,18 @@ namespace {
20022000
type = defaultType;
20032001
}
20042002

2005-
// Find the maximum-sized builtin float type.
2006-
// FIXME: Cache name lookup.
2007-
if (!MaxFloatTypeDecl) {
2008-
SmallVector<ValueDecl *, 1> lookupResults;
2009-
tc.getStdlibModule(dc)->lookupValue(/*AccessPath=*/{},
2010-
tc.Context.Id_MaxBuiltinFloatType,
2011-
NLKind::QualifiedLookup,
2012-
lookupResults);
2013-
if (lookupResults.size() == 1)
2014-
MaxFloatTypeDecl = dyn_cast<TypeAliasDecl>(lookupResults.front());
2015-
}
2016-
if (!MaxFloatTypeDecl ||
2017-
!MaxFloatTypeDecl->hasInterfaceType() ||
2018-
!MaxFloatTypeDecl->getDeclaredInterfaceType()->is<BuiltinFloatType>()) {
2003+
// Get the _MaxBuiltinFloatType decl, or look for it if it's not cached.
2004+
auto maxFloatTypeDecl = tc.Context.get_MaxBuiltinFloatTypeDecl();
2005+
2006+
if (!maxFloatTypeDecl ||
2007+
!maxFloatTypeDecl->hasInterfaceType() ||
2008+
!maxFloatTypeDecl->getDeclaredInterfaceType()->is<BuiltinFloatType>()) {
20192009
tc.diagnose(expr->getLoc(), diag::no_MaxBuiltinFloatType_found);
20202010
return nullptr;
20212011
}
2022-
tc.validateDecl(MaxFloatTypeDecl);
2023-
auto maxType = MaxFloatTypeDecl->getUnderlyingTypeLoc().getType();
2012+
2013+
tc.validateDecl(maxFloatTypeDecl);
2014+
auto maxType = maxFloatTypeDecl->getUnderlyingTypeLoc().getType();
20242015

20252016
DeclName initName(tc.Context, DeclBaseName::createConstructor(),
20262017
{ tc.Context.Id_floatLiteral });

0 commit comments

Comments
 (0)